await()
を使用して、サイズ1のCountDownLatch
で待機している複数のコンシューマスレッドがあります。私は成功したときにcountDown()
を呼び出す単一のプロデューサスレッドを持っています。CountDownLatchを「キャンセル」するにはどうすればよいですか?
エラーがない場合に効果的です。
しかし、プロデューサがエラーを検出した場合、そのエラーをコンシューマスレッドに通知できるようにしたいと思います。理想的には、プロデューサにabortCountDown()
のようなものを呼び出し、すべてのコンシューマにInterruptedExceptionやその他の例外を受け取らせることができます。 countDown()
に電話する必要はありません。これは、私のコンシューマスレッドのすべてが、await()
への呼び出しの後に、成功のために追加のマニュアルチェックを行う必要があるためです。私はむしろ彼らは例外を受け取り、彼らはすでにどのように処理するのか知っています。
アボート機能はCountDownLatch
にはありません。カウントダウンを中止するのに有効なCountDownLatch
を効果的に作成するために簡単に適応できる別の同期プリミティブがありますか?
このクラスの使い方、私の状況はリストであり、リストはリアルタイムで動的に更新されています。自動イベントが2分間待たなければならないリストに入っていますが、待機時間User Manual Eventがリストに入ってくると、待機を中断して直ちに処理を進めなければなりません。 –