A 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中文網其他相關文章!