1. 前言

现在的代码实现里面几乎不用Object.wait和Object.notify了,但是对其进行学习还是有助于理解为啥他们被Locksupport.park和unpark替换了。

2. 使用汇总

关于完整使用,参考文章:如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例

文章中使用wait的生产者和消费者例子可以看看。

主要要点是:

  1. 对需要线程间互斥的对象用synchronized,持有其监视器锁
  2. 永远在循环(loop)里调用 wait 和 notify, 主要避免条件不满足是就被虚假唤醒,可能导致死锁。