亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java 并發工具類-CyclicBarrier

2019-11-06 06:48:48
字體:
來源:轉載
供稿:網友

CyclicBarrier和CountDownLatch一樣,都是關于線程的計數器。其實原理都是一樣的只是,CyclicBarrier與CountDownLatch 最大區別在 CyclicBarrier 在運行錯誤可以重新set數值,重新跑線程,而CountDownLatch 只能減一 不能重新設置。

CyclicBarrier和CountDownLatch的區別

CountDownLatch的計數器只能使用一次。而CyclicBarrier的計數器可以使用reset() 方法重置。所以CyclicBarrier能處理更為復雜的業務場景,比如如果計算發生錯誤,可以重置計數器,并讓線程們重新執行一次。CyclicBarrier還提供其他有用的方法,比如getNumberWaiting方法可以獲得CyclicBarrier阻塞的線程數量。isBroken方法用來知道阻塞的線程是否被中斷。比如以下代碼執行完之后會返回true。

CyclicBarrier的應用場景

CyclicBarrier默認的構造方法是CyclicBarrier(int parties),其參數表示屏障攔截的線程數量,每個線程調用await方法告訴CyclicBarrier我已經到達了屏障,然后當前線程被阻塞。示例代碼如代碼清單8-3所示。

public class CyclicBarrierTest {staticCyclicBarrier c = new CyclicBarrier(2);public static void main(String[] args) {new Thread(new Runnable() {@Overridepublic void run() {try {c.await();} catch (Exception e) {}System.out.PRintln(1);}}).start();try {c.await();} catch (Exception e) {}System.out.println(2);}}

因為主線程和子線程的調度是由CPU決定的,兩個線程都有可能先執行,所以會產生兩種輸出1,2 或者2,1

如果把new CyclicBarrier(2)修改成new CyclicBarrier(3),則主線程和子線程會永遠等待,因為沒有第三個線程執行await方法,即沒有第三個線程到達屏障,所以之前到達屏障的兩個線程都不會繼續執行。

CyclicBarrier還提供一個更高級的構造函數CyclicBarrier(int parties,Runnable barrier-Action),用于在線程到達屏障時,優先執行barrierAction,方便處理更復雜的業務場景,如代碼清單8-4所示。

public class CyclicBarrierTest2 {static CyclicBarrier c = new CyclicBarrier(2, new A());public static void main(String[] args) {new Thread(new Runnable() {@Overridepublic void run() {try {c.await();} catch (Exception e) {}System.out.println(1);}}).start();try {c.await();} catch (Exception e) {}System.out.println(2);}static class A implements Runnable {@Overridepublic void run() {System.out.println(3);}}}

CyclicBarrier的應用場景

CyclicBarrier可以用于多線程計算數據,最后合并計算結果的場景。例如,用一個Excel保存了用戶所有銀行流水,每個Sheet保存一個賬戶近一年的每筆銀行流水,現在需要統計用戶的日均銀行流水,先用多線程處理每個sheet里的銀行流水,都執行完之后,得到每個sheet的日均銀行流水,最后,再用barrierAction用這些線程的計算結果,計算出整個Excel的日均銀行流水,如代碼清單8-5所示。

public class BankWaterService implements Runnable {/*** 創建4個屏障,處理完之后執行當前類的run方法*/private CyclicBarrier c = new CyclicBarrier(4, this);/*** 假設只有4個sheet,所以只啟動4個線程*/private Executor executor = Executors.newFixedThreadPool(4);/*** 保存每個sheet計算出的銀流結果*/private ConcurrentHashMap<String, Integer> sheetBankWaterCount = new ConcurrentHashMap<String, Integer>();private void count() {for (int i = 0; i < 4; i++) {executor.execute(new Runnable() {@Overridepublic void run() {// 計算當前sheet的銀流數據,計算代碼省略sheetBankWaterCount.put(Thread.currentThread().getName(), 1);// 銀流計算完成,插入一個屏障try {c.await();} catch (InterruptedException | BrokenBarrierException e) {e.printStackTrace();}}});}}@Overridepublic void run() {int result = 0;// 匯總每個sheet計算出的結果for (Entry<String, Integer> sheet : sheetBankWaterCount.entrySet()) {result += sheet.getValue();}// 將結果輸出sheetBankWaterCount.put("result", result);System.out.println(result);}public static void main(String[] args) {BankWaterService bankWaterCount = new BankWaterService();bankWaterCount.count();}}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲天堂2020| 色综合老司机第九色激情| 亚洲午夜未删减在线观看| 国产精品扒开腿做爽爽爽的视频| 韩国v欧美v日本v亚洲| 成人免费看黄网站| 国产精品一区二区三区毛片淫片| 国产精品精品久久久久久| 欧美精品亚州精品| 午夜精品一区二区三区视频免费看| 色无极亚洲影院| 欧美巨乳美女视频| 久久久综合免费视频| 亚洲第一天堂av| 欧美精品一区二区三区国产精品| 91精品国产综合久久香蕉| 久久精品影视伊人网| 国产视频欧美视频| 91免费看视频.| 国产主播喷水一区二区| 国产精品高清免费在线观看| 欧美福利视频在线| xvideos亚洲| 欧美美女15p| 亚洲欧美999| 精品亚洲一区二区三区四区五区| 国产91精品久| 成人免费黄色网| 日本午夜精品理论片a级appf发布| 亚洲欧美日韩天堂一区二区| 国产成人一区二区| 欧美激情精品久久久久久大尺度| 久久伊人精品一区二区三区| 久久久欧美精品| 亚洲最大av网站| 欧美电影在线观看网站| 日韩网站在线观看| 国产精品久久久久秋霞鲁丝| 国产激情久久久久| 韩国三级电影久久久久久| 亚洲午夜色婷婷在线| 久久露脸国产精品| 国产精品视频久| 久久久精品2019中文字幕神马| 亚洲国产欧美一区二区三区久久| 日韩亚洲欧美成人| 欧美成在线观看| 亚洲精品中文字幕av| 午夜免费日韩视频| 国产一区二区三区直播精品电影| 久久久亚洲影院你懂的| 97av在线影院| 亚洲欧美日韩爽爽影院| 日韩成人中文字幕在线观看| 国产91精品黑色丝袜高跟鞋| 91色精品视频在线| 亚洲国产精品人久久电影| 亚洲性av网站| 国模视频一区二区| 亚洲变态欧美另类捆绑| 亚洲视频日韩精品| 国产精品国产福利国产秒拍| 992tv成人免费影院| 日韩亚洲欧美中文高清在线| 久久久精品在线| 亚洲天堂精品在线| 国产一区二区三区精品久久久| 中文字幕亚洲欧美| 北条麻妃一区二区三区中文字幕| 欧美做受高潮1| 全色精品综合影院| 日本电影亚洲天堂| 日韩欧美亚洲一二三区| 97人人爽人人喊人人模波多| 国产手机视频精品| 欧美午夜精品久久久久久人妖| 色老头一区二区三区在线观看| 国产欧美最新羞羞视频在线观看| 国产成人精品久久二区二区91| 96pao国产成视频永久免费| 国产成人久久精品| 亚洲黄色av女优在线观看| 高清日韩电视剧大全免费播放在线观看| 国产成人福利夜色影视| 亚洲精品不卡在线| 亚洲aa中文字幕| 欧美亚洲午夜视频在线观看| 亚洲国产精品久久久久秋霞蜜臀| 伊人av综合网| 亚洲精品美女在线观看| 久久久av电影| 最近2019年日本中文免费字幕| 亚洲最大福利网| 久久人人爽亚洲精品天堂| 亚洲一区中文字幕在线观看| 国产一区二区黄| 91久久精品国产91久久| 精品国产一区二区三区久久久狼| 成人免费自拍视频| 国产亚洲a∨片在线观看| 欧美资源在线观看| 国内精品久久久| 亚洲石原莉奈一区二区在线观看| 精品久久久久久久久久久久久久| 国产激情综合五月久久| 久久这里有精品视频| 欧美黄色成人网| 欧美精品免费在线| 成人乱人伦精品视频在线观看| 欧美日韩亚洲一区二区三区| 欧美一级视频在线观看| 欧洲亚洲免费在线| 欧美裸身视频免费观看| 91色视频在线观看| 久久这里有精品视频| 国产精品久久久久久久久久ktv| 亚洲成人xxx| 成人免费在线网址| 亚洲福利在线视频| 国产美女久久精品香蕉69| 不用播放器成人网| 久久亚洲私人国产精品va| 欧美人在线观看| 日本韩国欧美精品大片卡二| 国产精品户外野外| 久久国产精彩视频| 久久久免费av| 欧美日韩中文字幕综合视频| 亚洲国产成人精品一区二区| 欧美国产视频日韩| 国产精品精品一区二区三区午夜版| 91在线国产电影| 日韩精品一区二区三区第95| 久久综合久中文字幕青草| 少妇高潮 亚洲精品| 欧美高清视频一区二区| 性欧美xxxx视频在线观看| 中文字幕亚洲第一| 欧美中文字幕视频在线观看| 97超级碰碰人国产在线观看| 欧美激情视频网站| 视频在线观看99| 国产一区二区三区精品久久久| 91在线观看免费高清| 国产剧情日韩欧美| 亚洲精品视频二区| 在线观看日韩av| 欧美成人在线网站| 欧美激情一区二区三区在线视频观看| 欧美激情精品久久久久久大尺度| 日韩欧美a级成人黄色| 性色av一区二区三区红粉影视| 亚洲日本欧美中文幕| 免费av一区二区| 成人黄色免费网站在线观看| 亚洲天堂av在线免费| 91色p视频在线| 国产精品久久久久久影视| 国产精品美乳一区二区免费| 国产亚洲a∨片在线观看| 国产精品第三页| 欧美成人在线免费| 一本久久综合亚洲鲁鲁| 91精品久久久久久久久久久久久久|