CyclicBarrier 使用詳解

2021-10-06 06:21:15 字數 1500 閱讀 3379

使用場景

cyclicbarrier 與 countdownlatch 區別

從字面上的意思可以知道,這個類的中文意思是「迴圈柵欄」。大概的意思就是乙個可迴圈利用的屏障。

它的作用就是會讓所有執行緒都等待完成後才會繼續下一步行動。

舉個例子,就像生活中我們會約朋友們到某個餐廳一起吃飯,有些朋友可能會早到,有些朋友可能會晚到,但是這個餐廳規定必須等到所有人到齊之後才會讓我們進去。這裡的朋友們就是各個執行緒,餐廳就是 cyclicbarrier。

public cyclicbarrier(int parties)

public cyclicbarrier(int parties, runnable barrieraction)

解析:

public int await() throws interruptedexception, brokenbarrierexception

public int await(long timeout, timeunit unit) throws interruptedexception, brokenbarrierexception, timeoutexception

解析:

乙個執行緒組的執行緒需要等待所有執行緒完成任務後再繼續執行下一次任務

public class cyclicbarrierdemo 

@override

public void run() catch (exception e) }}

public static void main(string args)

});for(int i = 0; i < threadnum; i++)

}}

thread-1 到達柵欄 a

thread-3 到達柵欄 a

thread-0 到達柵欄 a

thread-4 到達柵欄 a

thread-2 到達柵欄 a

thread-2 完成最後任務

thread-2 衝破柵欄 a

thread-1 衝破柵欄 a

thread-3 衝破柵欄 a

thread-4 衝破柵欄 a

thread-0 衝破柵欄 a

thread-4 到達柵欄 b

thread-0 到達柵欄 b

thread-3 到達柵欄 b

thread-2 到達柵欄 b

thread-1 到達柵欄 b

thread-1 完成最後任務

thread-1 衝破柵欄 b

thread-0 衝破柵欄 b

thread-4 衝破柵欄 b

thread-2 衝破柵欄 b

thread-3 衝破柵欄 b

從列印結果可以看出,所有執行緒會等待全部執行緒到達柵欄之後才會繼續執行,並且最後到達的執行緒會完成 runnable 的任務。

可以用於多執行緒計算資料,最後合併計算結果的場景。

CyclicBarrier 使用詳解

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

CyclicBarrier 使用詳解

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

CyclicBarrier 使用詳解

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