Java Tutorials包含使用受保护块的Producer-Consumer应用程序的基本example。他们还简要说明了notify与notifyAll的区别和典型用例。
关于示例代码的问题:
是否可以更改put和take方法的代码
//Notify producer that status has changed.
notifyAll();
和
//Notify consumer that status has changed.
notifyAll();
使用notify()而不是notifyAll()并且仍然可以正确实现Producer-Consumer模式吗?
答案 0 :(得分:0)
如果可能有多个消费者(或生产者)需要通知所有消费者,否则只有一个消费者会醒来消费,所有其他消费者都会睡觉,直到生产者意外地唤醒他们。 在大多数情况下,我已经看到notifyAll()更好(即可能性能最小但问题少)解决方案。