2011-05-06 5 views
0

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

Мой вопрос о примере кода:

является возможность изменить код надетой и принять Методы

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

и

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

использовать уведомит() вместо notifyAll() и по-прежнему иметь правильную реализацию модели «Продюсер-потребитель»?

+1

В большинстве случаев да, но это зависит от того, что должны делать потребители. – Kaj

+0

BTW: Я бы не использовал низкий уровень уведомления/notifyAll/wait, если вам действительно не нужно. Я бы использовал ExecutorService и, возможно, отдельную очередь. –

ответ

0

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

+0

Вот почему я сказал, что это зависит от того, что делают потребители. Очень часто вы хотите, чтобы один потребитель потреблял произведенное событие. Остальные будут ждать. – Kaj

Смежные вопросы