Wait()-线程释放此监视器的所有权,并等待直到另一个线程通知该对象的监视器上正在等待通过调用notify()
方法或notifyAll()
方法唤醒的线程。然后,线程等待,直到它可以重新获得监视器的所有权并恢复执行。
Sleep()-此方法使当前正在执行的线程进入休眠状态(暂时停止执行)达指定的毫秒数。该线程不会失去任何监视器的所有权。它将在指定的时间内将当前线程发送到“不可运行”状态。
序号 | 键 | 等待 | 睡觉 |
---|---|---|---|
1 | 类 | Wait()方法属于Object类 | Sleep()方法属于Thread类 |
2 | 锁释放 | Wait()释放对象上的锁 | 它不会释放对对象的锁定 |
3 | 调用上下文 | 可以在对象本身上调用Wait() | 可以在线程上调用Sleep() |
4。 | 唤醒条件 | 直到通话notify() ,notifyAll() 从对象 | 直到至少时间到期或通话中断 |
5 | 虚假唤醒 | 程序可能会虚假唤醒 | 它不会产生虚假的唤醒。 |
synchronized(lockedObject){ while(condition == true){ lockedObject.wait() //releases lockedObject lock } Thread.sleep(100); //puts current thread on Sleep }