1、线程睡眠
Thread中的sleep方法可以使当前线程睡眠,线程睡眠后,里面的任务不执行,待睡眠时间过后会自动苏醒,从而继续执行任务
Thread中有两个重载的sleep方法
sleep(long mills),指定睡眠毫秒数
sleep(long mills,int nanos),第一个参数是毫秒,第二个参数是纳秒
Thread.sleep(1000);
2、sleep和wait区别
sleep
Sleep是线程类Thread 的静态方法,它是使当前线程暂时睡眠,可以放在任何位置。Sleep使用的时候,线程并不会放弃对象的使用权,所以在同步方法或同步块中使用sleep,一个线程访问时,其他的线程无法访问。sleep只是暂时休眠一定时间,时间到了之后,自动恢复运行,不需另外的线程唤醒wait
wait是Object中的方法,其是使当前线程暂时放弃对象的使用权进行等待,必须放在同步方法或同步块里。wait会释放当前线程,放弃对象的使用权,让其他的线程也可以访问。导致当前线程等待,直到另一个线程调用该对象的 notify()方法或notifyAll()方法,或者某些其他线程中断当前线程,或一定量的实时时间
最大区别:
sleep位置随意,睡眠时,保持对象锁,仍然占有改锁,并且其他线程无法访问
wait必须放在同步方法或同步块里,睡眠时,释放对象锁,其他线程可以访问,如未设置时间,且需要其他线程唤醒