CyclicBarrier的簡單使用

2021-10-24 20:30:14 字數 1043 閱讀 2822

countdownlatch雖然好用,但是也有不足,就是它的計數器不能迴圈使用,是屬於一次性的消費品,對此cyclicbarrier倒是彌補了它這個不足,大部分情況下cyclicbarrier是對countdownlatch的補充,但是兩者還是有一點小小的區別

假如公司團建,大家一起做大巴車,在大巴車出發之前,肯定是需要點名的,只有大家都到車上之後,才會發車,然後到了到了目的地之後,肯定是所有人都下車了,司機才能把車開走,這個過程中涉及了2次大家都就位之後,司機才能繼續操作,可以證明cyclicbarrier可以迴圈使用計數器。

class

flag

public

intgetnum()

public

void

setnum

(int num)

}

public

class

cyclicbarriertest

else})

;for

(int i =

1; i <

6; i++

)catch

(interruptedexception e)

catch

(brokenbarrierexception e)

}, string.

valueof

(i))

.start()

;}system.out.

println

("主線程不阻塞");

}}

執行結果

countdownlatch屬於乙個對多個的(countdownlatch這篇裡有講到過),而cyclicbarrier是多對多的,只要多個執行緒都達到後,自會執行接下來的事,沒有countdownlatch的乙個等多個,多個等乙個的現象。

countdownlatch的計數器只能使用一次,而cyclicbarrier可以迴圈使用。

CyclicBarrier實現原理

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

同步屏障CyclicBarrier

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

CyclicBarrier 使用詳解

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