私は BlockingQueue を書いていますが、他の実装がこの問題をどのように解決するのか疑問に思っています:
モニター (キュー オブジェクト) が 1 つしかなく、プロデューサーとコンシューマーを許可する場合、代わりに呼び出されるwait
ことを確認する必要があります。そうしないと、プロデューサーは、キューがいっぱいの場合でも、別の待機中のプロデューサーに続行するように通知するだけです。物が入手可能であっても消費者を待たせる。一方、呼び出しは、多くのスレッドやプロセッサにとってスケーラブルなソリューションではないようです。notifyAll
notify
notifyAll
BlockingQueue
は 2 台のモニターを使用しますか? 1 つは生産者の待機で、もう 1 つは消費者の待機でしたか? 次に、キューと関連するモニターをカプセル化された方法で同期する必要があります。それは行く方法ですか?