CyclicBarrier は、一連のスレッドが互いに共通のバリア ポイントに到達するのを待機できるようにする同期支援機能です。すべてのスレッドがバリアに到達すると、解放されて作業を続行します。バリアは、待機中のスレッドが解放された後に再利用できるため、「循環」と呼ばれます。
CyclicBarrier がどのように機能するかをより深く理解するために、実際の例とデモを見てみましょう。
これは、CyclicBarrier の使用を示す簡単な例です。
import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; public class CyclicBarrierDemo { public static void main(String[] args) { final int numberOfThreads = 3; CyclicBarrier barrier = new CyclicBarrier(numberOfThreads, new BarrierAction()); for (int i = 0; i < numberOfThreads; i++) { new Thread(new Task(barrier)).start(); } } } class Task implements Runnable { private final CyclicBarrier barrier; Task(CyclicBarrier barrier) { this.barrier = barrier; } @Override public void run() { try { System.out.println(Thread.currentThread().getName() + " is waiting at the barrier."); barrier.await(); System.out.println(Thread.currentThread().getName() + " has passed the barrier."); } catch (InterruptedException | BrokenBarrierException e) { e.printStackTrace(); } } } class BarrierAction implements Runnable { @Override public void run() { System.out.println("Barrier Action executed. All threads are released."); } }
上記のコードを実行すると、次のシーケンスが表示されます:
出力例を次に示します:
Thread-0 is waiting at the barrier. Thread-1 is waiting at the barrier. Thread-2 is waiting at the barrier. Barrier Action executed. All threads are released. Thread-0 has passed the barrier. Thread-1 has passed the barrier. Thread-2 has passed the barrier.
CyclicBarrier は、Java の複数のスレッドを調整するための貴重なツールです。これにより、スレッドが相互に待機し、複数のサイクルにわたって再利用できるため、多くの同期シナリオに最適です。データをバッチで処理する場合でも、並列アルゴリズムを実装する場合でも、CyclicBarrier の効果的な使用方法を理解すると、マルチスレッド プログラミング スキルが向上します。
ご質問がある場合、またはプロジェクトでの CyclicBarrier の使用についてさらに説明が必要な場合は、お気軽に以下にコメントしてください!
で投稿の詳細を読む: CyclicBarrier とは何ですか?重要な事実と例の説明
以上がサイクリックバリアとは何ですか?重要な事実と例の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。