CyclicBarrier應用案例講解

2021-09-23 02:01:39 字數 1052 閱讀 7443

由於cyclicbarrier計數達到指定後會重新迴圈使用,所以cyclicbarrier可以用在所有子執行緒之間互相等待多次的情形。

比如在某種需求中,比如乙個大型的任務,常常需要分配好多子任務去執行,只有當所有子任務都執行完成時候,才能執行主任務,這時候,就可以選擇cyclicbarrier了。

應用場景:

乙個大型的任務,常常需要分配好多子任務去執行,只有當所有子任務都執行完成時候,才能執行主任務

案例**:

public class cyclicbarriertest catch (interruptedexception e) catch (brokenbarrierexception e) {

e.printstacktrace();

//主任務

private static class maintask implements runnable{

private int sum;

public maintask(int sum) {

this.sum=sum;

@override

public void run() {

int sum_1=0;

for(int i=0;isystem.out.println("i:"+i+"---"+sum[i]);

sum_1+=sum[i];

system.out.println("總和:"+sum_1);

public static void main(string args) {

intsum=new int[5];

//當所有子任務完成時,計數器為0,執行主任務。

cyclicbarrier barrier=new cyclicbarrier(5,new maintask(sum));

executorservice exec=executors.newfixedthreadpool(5);

for(int i=0;i<5;i++){

exec.execute(new subtask(sum, i, barrier));

exec.shutdown();

CyclicBarrier實現原理

cyclicbarrier是乙個同步輔助類,它允許一組執行緒互相等待,直到所有執行緒都到達某個公共屏障點 也可以叫同步點 即相互等待的執行緒都完成呼叫await方法,所有被屏障攔截的執行緒才會繼續執行await方法後面的程式。在涉及一組固定大小的執行緒的程式中,這些執行緒必須不時地互相等待,此時cy...

同步屏障CyclicBarrier

cyclicbarrier操作excel public class bankwaterservice implements runnable private void count throws exception 計算當前sheet的銀流資料,計算 省略 sheetbankwatercount.pu...

CyclicBarrier 使用詳解

從字面上的意思可以知道,這個類的中文意思是 迴圈柵欄 大概的意思就是乙個可迴圈利用的屏障。它的作用就是會讓所有執行緒都等待完成後才會繼續下一步行動。舉個例子,就像生活中我們會約朋友們到某個餐廳一起吃飯,有些朋友可能會早到,有些朋友可能會晚到,但是這個餐廳規定必須等到所有人到齊之後才會讓我們進去。這裡...