0

Java 教程包含一个使用受保护块的生产者-消费者应用程序的基本示例。他们还简要解释了 notify 与 notifyAll 的区别和典型用例。

我关于示例代码的问题:

是否可以更改 put 和 take 方法的代码

    //Notify producer that status has changed.
    notifyAll();

    //Notify consumer that status has changed.
    notifyAll();

使用 notify() 而不是 notifyAll() 并且仍然具有生产者-消费者模式的正确实现?

4

1 回答 1

0

如果可以有多个消费者(或生产者),则需要通知所有消费者,否则只有一个消费者会醒来消费,其他消费者会一直休眠,直到生产者意外唤醒他们。在大多数情况下,我看到 notifyAll() 是更好的(即性能可能最低,但问题更少)的解决方案。

于 2011-05-06T14:57:19.673 回答