併發工具之CycliBarrier

2021-09-26 18:36:25 字數 1209 閱讀 6608

cyclibarrier :柵欄

作用: 可以使一組執行緒在達到同乙個屏障之前阻塞,當最後乙個執行緒到達屏障時,屏障開啟,這一組執行緒繼續

往下執行

構造方法:

new cyclicbarries(int parties)

parties 執行緒組的數量,當只有部分執行緒到達屏障時,該部分執行緒阻塞,當所有執行緒都到達屏障時,屏障放行

主要方法:

await : 讓當前執行緒等待,當等待執行緒數等於指定數目時,喚醒所有的執行緒

reset: 可以重置barrier狀態,開始新的barries

案例如下:

public class cyclicbarriesdemo 

public static void test() catch (interruptedexception e) catch (brokenbarrierexception e)

system.out.println("一號線程開始跑了");

}).start();

new thread(() -> catch (interruptedexception e) catch (brokenbarrierexception e)

system.out.println("二號線程資料開始跑了");

}).start();

new thread(() -> catch (interruptedexception e) catch (brokenbarrierexception e)

system.out.println("三號執行緒資料開始跑了");

}).start();

new thread(() -> catch (interruptedexception e) catch (brokenbarrierexception e)

system.out.println("四號線程開始跑了哦");

}).start();

}}

執行結果如下:

4

主線程結束執行

一號線程資料準備完畢

二號線程資料準備完畢

三號執行緒資料準備完畢

四號線程資料準備完畢

四號線程開始跑了哦

一號線程開始跑了

三號執行緒資料開始跑了

二號線程資料開始跑了

併發工具類之 CyclicBarrier

cyclicbarrier 字面意思是可迴圈 cyclic 的屏障 barrier 它要做的事情是讓一組執行緒到達屏障時被阻塞,直到最後乙個執行緒也到達屏障,屏障才會開門,所有被屏障攔截的執行緒才會繼續執行。cyclicbarrier 有兩個構造方法,我們先來看第乙個 cyclicbarrier i...

併發工具類之 Exchanger

exchanger 交換者 是乙個用於執行緒間協作的工具類。exchanger 用於進行執行緒間的資料交換。兩個執行緒通過exchange 方法交換資料,第乙個執行緒執行到exchange 方法後會一直等待第二個執行緒也執行exchange 方法,當兩個執行緒都到達同步點後,這兩個執行緒就可以交換資...

Java併發工具類之CyclicBarrier

cyclicbarrier的意思是可迴圈使用的屏障。它可以讓一組執行緒到達乙個屏障時被阻塞,直到最後乙個執行緒到達屏障時,屏障才會開門,所有阻塞的執行緒才會繼續執行。它就好像一道關卡,只有所有的部隊 執行緒 都到了才能放行。部分原始碼 public class cyclicbarrier 可以看到,...