notify vs notifyAll в приложении Producer-Consumer - PullRequest
0 голосов
/ 06 мая 2011

Java Tutorials содержат базовый пример для приложений производителя-потребителя, использующих защищенные блоки.Они также дают краткое объяснение различий и типичных случаев использования notify vs notifyAll.

Мой вопрос относительно кода примера:

можно ли изменить код методов put и take

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

и

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

, чтобы использовать notify () вместо notifyAll () и все еще иметь правильную реализацию шаблона Producer-Consumer?

1 Ответ

0 голосов
/ 06 мая 2011

Если может быть несколько потребителей (или производителей), необходимо уведомить их всех, иначе только один потребитель проснется и потребит, все остальные будут спать, пока производитель случайно не разбудит их. В большинстве случаев я видел, что notifyAll () - лучшее (то есть, возможно, минимальное снижение производительности, но меньше проблем).

...