0

Java チュートリアルには、保護されたブロックを使用したプロデューサー/コンシューマー アプリケーションの基本的な例が含まれています。また、notify と notifyAll の違いと一般的な使用例についても簡単に説明します。

サンプルコードに関する私の質問:

put メソッドと take メソッドのコードを変更することはできますか

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

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

notifyAll() の代わりに notify() を使用しても、Producer-Consumer パターンを正しく実装するには?

4

1 に答える 1

0

複数のコンシューマー(またはプロデューサー)が存在する可能性がある場合は、それらすべてに通知する必要があります。そうでない場合、1つのコンシューマーのみがウェイクアップして消費し、プロデューサーが誤ってウェイクアップするまで他のすべてのコンシューマーがスリープします。ほとんどの場合、notifyAll()の方が優れた(つまり、パフォーマンスは最小限に抑えられますが、問題は少なくなります)ソリューションです。

于 2011-05-06T14:57:19.673 に答える