CountDownLatchオブジェクトのカウントダウンメソッドを呼び出すカウントダウンカウンターは、カウンターを引いたもので1を引いています。0に達すると、すべてのウェイターが実行を開始します。
java.util.concurrent.countdownlaatch
同期補助クラスは、他のスレッドで一連の操作を完了する前に、1つ以上のスレッドが待機できるようにします。特定のカウントを使用して、CountDownLatchを初期化します。 CountDown()メソッドが呼び出されるため、現在のカウントがゼロに達する前に、待機方法がブロックされています。その後、すべての待機スレッドがリリースされ、その後のすべての待機コールはすぐに戻ります。この現象は、カウントをリセットすることはできません。カウントをリセットする必要がある場合は、Cyclicbarrierの使用を検討してください。
CountDownLatchは一般的な同期ツールであり、多くの用途があります。単純なオープニング/ロック預金者として1つの初期化されたCountOwnLatchをカウントするか、入り口を使用します。CountDown()スレッドコールを呼び出して入り口を開く前に、待機するすべてのスレッドが入り口で待っていました。 nスレッドが完了する前にスレッドが待機するか、特定の操作の前に待機し続けることができるカウントダウンラッチのイニシャルを使用することができます。
CountDownLatchの有用な機能の1つは、カウントダウンメソッドを呼び出すスレッドがゼロにカウントされるまで続行する必要がないことであり、すべてのスレッドが通過する前に、スレッドが待機を続けるのを防ぐことです。
例:複数のアスリートが審判の注文を待っています:審判や他のアスリートなどのすべてのアスリートは、Qi Qiの後に結果をリリースします
com.ljq.test.thread。 .newcachedthreadpool();審判は結果の結果を発表しました。 raun(){try {system.out.println( "スレッド" + currentthread() + "はコマンドを受け入れる準備をしています。 + thread.currentthread()。 +「応答コマンド処理結果 ");;} catch(excong e){e.printstacktrace();}} .random()*10000); command system.out.println( "thread" + thread.currentthread() + "はコマンドを送信しました0 system.out.println( "thread" + thread.currentthread()。バック結果:
スレッドプール-thread-3は、コマンドスレッドプール-1-thread-isを受け入れる準備をしていますコマンドスレッドプール-thread-2はコマンドスレッドメインを受け入れる準備をしています。結果の結果を待っているコマンドは、結果の結果を待っていますが、結果スレッドプール-Thread-2がコマンドスレッドPool-1-Thread-1-Thread-3がコマンドスレッドPool-Thread-3を受け入れたことを受け入れました。コマンド処理結果に応答するスレッドプール-1-コマンド処理結果へのスレッド2スレッドプール-1-thread-1応答コマンド処理結果スレッドメインはすべての応答結果を受信しました