1.为什么wait,notify,notifyall必须用在同步中?(API文档)
当前线程必须拥有此对象监视器(锁)。
该线程发布(放弃)对此监视器(锁)的所有权并等待,
直到其他线程通过调用 notify 方法,或 notifyAll 方法通知在此对象的监视器上等待的线程醒来。
然后 该线程将等到重新获得对监视器的所有权后才能继续执行。
2.为什么需要标识出 wait操作的 线程所持有的锁?
因为可能出现同步嵌套,出现多个锁
同一个锁上等待的线程,只能被同一个锁上的线程唤醒
3.sleep与wait(API)
sleep: 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。
该线程不丢失任何监视器(锁)的所属权。
wait:在第一条已说明
|