sleep() 当前调用线程进入睡眠状态,获取不到cpu的时间执行片段,等时间到了之后才会去获取cpu的时间执行片段;
wait() 当前对象的线程进入进入等待队列,处于挂起状态,当其他线程调用该对象的notify/notifyAll或者wait时间到了,当前的线程才被唤醒,继续执行。
1/ 从这里来看,两者都是将线程处于“暂停”运行状态,但“继续往下执行”的条件不同;所以在选择使用的时候,前者多用于有前后两行代码之间间隔时间太短的需求的情况下使用;后者是用于需要等待其他线程做完相应的事情后,通知本线程继续执行,起到同步的作用。
另外,在使用到同步对象的时候要注意一点的是:
sleep( )是线程Thread的静态方法,当被调用时,不会释放该线程对象的机锁;
wait( )是Object的方法,当被调用时,会释放该线程对象的机锁。