時々、ウェイクアップするか、単一のスレッドをスリープ状態にする必要がありますが、それを行うための最良かつ最も効率的な方法は何でしょうか。
最初の解決策は、シグナリングと組み合わせることですwait-notify
(このパターンを適切に実装する方法を知っていますが、それは問題ではありません)。
java.concurrentライブラリを使用し、CountDownLatch
シグナリングに使用する方が効率的であるとどこかで読みました。私はconcurrent.locks.Conditionもチェックしましたが、このトピックでは、これは(プログラマー的に)より安全で一般化された構成であり、と比較してパフォーマンス上の利点はないと述べていnotify/notifyAll
ます。Peter Lawreyは、このコメントの代わりに同時実行ライブラリを使用することを推奨しているため、使用するベストプラクティスが何であるか混乱しています。notify-notifyAll
関連する質問:パフォーマンスの面で、notify
またはnotifyAll
私の場合(つまり、スレッドが1つある場合)はどちらが優れていますか?私はこれについて多くの同様のスレッドがあることを知っていますが、それらのどれも明確な答えを与えません。私の場合、機能的にはどちらを使用してもかまいませんが、どちらが速いのでしょうか。