日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

java并發(fā)編程專題(九)----(JUC)淺析CyclicBarrier

瀏覽:20日期:2022-08-29 18:05:06

上一篇我們介紹了CountDownlatch,我們知道CountDownlatch是“在完成一組正在其他線程中執(zhí)行的操作之前,它允許一個或多個線程一直等待”,即CountDownLatch的作用是允許1或N個線程等待其他線程完成執(zhí)行,而我們今天要介紹的CyclicBarrier則是允許N個線程相互等待。

1.CyclicBarrier簡介

CyclicBarrier 的字面意思是可循環(huán)使用(Cyclic)的屏障(Barrier)。它要做的事情是,讓一組線程到達(dá)一個屏障(也可以叫同步點)時被阻塞,直到最后一個線程到達(dá)屏障時,屏障才會開門,所有被屏障攔截的線程才會繼續(xù)干活。 在JDK中對CyclicBarrier是這樣說的“允許一組線程全部等待彼此到達(dá)公共屏障點的同步輔助。 循環(huán)障礙在涉及必須偶爾彼此等待的固定大小的線程程序中是有用的。屏障稱為循環(huán) ,因為它可以在等待線程釋放后重新使用”。CountDownLatch的計數(shù)器無法被重置;CyclicBarrier的計數(shù)器可以被重置后使用,因此它被稱為是循環(huán)的barrier。

我們先來看一下他的構(gòu)造方法和使用方式:

構(gòu)造函數(shù): CyclicBarrier(int parties) //其參數(shù)表示屏障攔截的線程數(shù)量,每個線程調(diào)用await方法告 訴CyclicBarrier我已經(jīng)到達(dá)了屏障,然后當(dāng)前線程被阻塞。

CyclicBarrier (int parties, Runnable barrierAction) //創(chuàng)建一個新的CyclicBarrier ,當(dāng)給定數(shù)量的參與者(線程)等待它時,它將跳閘,當(dāng)障礙跳閘時,它將執(zhí)行 給定的障礙動作(Runnable參數(shù)提供),由最后一個線程進(jìn)入障礙。

方法: int await() //在所有參與者都已經(jīng)在此 barrier 上調(diào)用 await 方法之前,將一直等待。 方法之前將一直等待,或者超出了指定的等待時間。 int getNumberWaiting() //返回當(dāng)前在屏障處等待的參與者數(shù)目。 int getParties()//返回要求啟動此 barrier 的參與者數(shù)目。 boolean isBroken() //查詢此屏障是否處于損壞狀態(tài)。 void reset() //將屏障重置為其初始狀態(tài)。

下面我們來看一個小程序了解一下CyclicBarrier的使用方式:

public class CyclicBarrierTest { static CyclicBarrier c = new CyclicBarrier(2); public static void main(String[] args) { new Thread(new Runnable() { @Override public void run() {try { c.await();} catch (Exception e) {}System.out.println(Thread.currentThread().getName()+'正在等待...'); } }).start(); try { c.await(); } catch (Exception e) { } System.out.println(Thread.currentThread().getName()+'正在等待...'); System.out.println('人夠了,出發(fā)吧 當(dāng)前有 '+c.getParties()+' 個人參與比賽'); }}

輸出結(jié)果為:

Thread-0正在等待...main正在等待...人夠了,出發(fā)吧 當(dāng)前有 2 個人參與比賽

Process finished with exit code 0

在上面程序中如果我們把”static CyclicBarrier c = new CyclicBarrier(2);”中的參數(shù)2修改為3的話改程序中的線程Thread-0和main則會一直等待下去,因為CyclicBarrier是讓一組線程到達(dá)一個屏障(也可以叫同步點)時被阻塞,直到最后一個線程到達(dá)屏障時,屏障才會開門,而這最后一個線程遲遲不來,所以屏障也不會被打開。

CyclicBarrier還提供一個更高級的構(gòu)造函數(shù)CyclicBarrier(int parties, Runnable barrierAction),用于在線程到達(dá)屏障時,優(yōu)先執(zhí)行barrierAction,方便處理更復(fù)雜的業(yè)務(wù)場景。我們來看一下示例:

public class CyclicBarrierTest { static CyclicBarrier c = new CyclicBarrier(2,new PrioExecut()); public static void main(String[] args) { new Thread(new Runnable() { @Override public void run() {try { c.await();} catch (Exception e) {}System.out.println(Thread.currentThread().getName()+'正在等待...'); } }).start(); try { c.await(); } catch (Exception e) { } System.out.println(Thread.currentThread().getName()+'正在等待...'); System.out.println('人夠了,出發(fā)吧 當(dāng)前有 '+c.getParties()+' 個人參與比賽'); }}class PrioExecut implements Runnable{ @Override public void run() { System.out.println('我會先跑5秒,不管你信不信!'); }}

執(zhí)行結(jié)果為:

我會先跑5秒,不管你信不信!Thread-0正在等待...main正在等待...人夠了,出發(fā)吧 當(dāng)前有 2 個人參與比賽

Process finished with exit code 0

我們可以看到構(gòu)造方法中的參數(shù):new PrioExecut()中的線程會優(yōu)先執(zhí)行。

2.CyclicBarrier的應(yīng)用場景

CyclicBarrier可以用于多線程計算數(shù)據(jù),最后合并計算結(jié)果的應(yīng)用場景。比如在支付業(yè)務(wù)中,我們可以按照事先劃分好的片區(qū)的形式來統(tǒng)計日收支流水,然后根據(jù)片區(qū)的計算結(jié)果,使用Runnable barrierAction來進(jìn)行匯總這是一個很好的實現(xiàn)。

3.CyclicBarrier和CountDownLatch的區(qū)別

在javadoc里面的描述是這樣的:

CountDownLatch: A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes.

CyclicBarrier : A synchronization aid that allows a set of threads to all wait for each other to reach a common barrier point.

根據(jù)我的理解:對于CountDownLatch來說,重點是那個“一個線程”, 它在等待其余線程執(zhí)行完畢他才能執(zhí)行,而另外那N的線程在把“某個事情”做完之后可以繼續(xù)等待,可以終止。比如上文說的跑步的例子,只有5位跑步者同時準(zhǔn)備好了,裁判才能下令開始跑步;CyclicBarrier強(qiáng)調(diào)的是n個線程,大家相互等待,只要有一個沒完成,所有人都得等著。 CountDownLatch的計數(shù)器無法被重置;CyclicBarrier的計數(shù)器可以使用reset() 方法重置。所以CyclicBarrier能處理更為復(fù)雜的業(yè)務(wù)場景,比如如果計算發(fā)生錯誤,可以重置計數(shù)器,并讓線程們重新執(zhí)行一次。

以上就是java并發(fā)編程專題(九)----(JUC)淺析CyclicBarrier的詳細(xì)內(nèi)容,更多關(guān)于java juc CyclicBarrier的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费日本视频一区| 亚洲三级视频| 亚洲青青久久| 久久久久久久久丰满| 久久精品一本| 国产欧美午夜| 国产精品1区| 欧美精品97| 国产精品久久| 精品久久电影| 欧美xxxx性| 久久99蜜桃| 色综合五月天| 欧美一区自拍| 青青草伊人久久| 国产欧美三级| 国产精品网在线观看| 蜜臀av国产精品久久久久| 美女国产精品| 久久午夜影视| 亚洲综合二区| 日韩一区精品视频| 老鸭窝毛片一区二区三区| 美女网站一区| 国产高清一区二区| 欧美色图一区| 欧美精选一区二区三区| 伊人久久成人| 欧美特黄一区| 丝袜美腿成人在线| 日本va欧美va精品| 国产精品99精品一区二区三区∴| 欧美国产一级| 日韩精品永久网址| 久久久夜夜夜| 91成人精品| 麻豆9191精品国产| 奇米亚洲欧美| 精品国产第一福利网站| 亚洲91久久| 欧美午夜精品一区二区三区电影| 蜜桃视频欧美| 综合视频一区| 三级欧美在线一区| 欧美aa在线视频| 成人va天堂| 蜜臀国产一区二区三区在线播放 | 99国产精品99久久久久久粉嫩| 国产视频亚洲| 日韩激情网站| 日本a口亚洲| 欧美国产视频| 欧美日韩精品免费观看视完整| 老鸭窝毛片一区二区三区| 日本天堂一区| 中文视频一区| 青草综合视频| 激情欧美一区| 麻豆成人在线| 天堂久久av| 精品视频一区二区三区在线观看 | 日韩高清不卡在线| 久久99青青| 亚洲一区成人| 国产亚洲电影| 岛国精品一区| 香蕉精品视频在线观看| 中文无码日韩欧| 欧美交a欧美精品喷水| 久久一区二区三区电影| 亚洲免费网址| 久久精品国产免费| 视频一区欧美日韩| 欧美精品97| 久久久久久免费视频| 亚洲欧美专区| 精品1区2区3区4区| 国产免费av国片精品草莓男男 | 亚洲一区日韩| 国产精品男女| 美女亚洲一区| 欧美日韩1区| 捆绑调教美女网站视频一区| 999精品一区| 亚洲啊v在线免费视频| 福利精品在线| 亚洲精品自拍| 99国产精品私拍| 久久精品国产99国产精品| 日本视频一区二区| 精品一区欧美| 国产欧美一区二区三区国产幕精品 | 国产视频一区二区在线播放| 欧美日韩国产观看视频| 噜噜噜躁狠狠躁狠狠精品视频| 欧美精品成人| 一区二区三区四区日韩| 日本а中文在线天堂| 国产亚洲字幕| 在线亚洲欧美| 久久亚洲人体| 男女激情视频一区| 成人日韩精品| 综合激情一区| 精品久久在线| 亚洲精品进入| 国产99久久久国产精品成人免费| 蜜桃久久精品一区二区| 国内精品99| 国产一区国产二区国产三区| 在线免费观看亚洲| 精精国产xxxx视频在线播放| 亚洲综合激情在线| 精品在线91| 高潮一区二区| 国产精品网在线观看| 爽好久久久欧美精品| 黑丝一区二区| 欧美sm一区| 日韩精品成人在线观看| 日韩在线网址| 偷拍欧美精品| 极品日韩av| 日韩精品欧美| 精品日韩一区| 色婷婷亚洲mv天堂mv在影片| 久久成人福利| 亚洲精品进入| 蜜桃av一区二区在线观看| 亚洲福利国产| 久久久久免费av| 日产精品一区| 国产一区国产二区国产三区| 国产劲爆久久| 国产精品一区免费在线| 日韩精选在线| 日韩欧美四区| 视频一区二区不卡| 欧美在线资源| 久久国产欧美| 日本精品影院| 久久久久国产| 久久久久久久久丰满| 日韩大片在线| 国产精品久久久久av电视剧| 新版的欧美在线视频| 中文字幕高清在线播放| 亚洲国内欧美| 欧美二区视频| 日韩另类视频| 伊人精品一区| 在线精品视频在线观看高清| 欧美二三四区| 亚洲一级二级| 99国产精品| 免费在线观看视频一区| 日韩在线一二三区| 岛国精品一区| 日韩免费一区| 久久久一本精品| 激情欧美一区| 亚洲欧美久久久| 偷拍亚洲精品| 国产日本精品| 精品一级视频| 精品国产亚洲一区二区三区在线| 精品一区二区三区免费看 | 韩日一区二区| 亚洲91视频| 午夜精品网站| 亚洲影院天堂中文av色| 亚洲日产国产精品| 欧美一区二区三区久久| 国产精品久久久久久妇女| 国产videos久久| 夜鲁夜鲁夜鲁视频在线播放| 色88888久久久久久影院| 韩国女主播一区二区三区| 国产aⅴ精品一区二区四区| 国产综合色区在线观看| 亚洲精品激情| 国产精品久久久免费| 国产精品theporn| 999久久久精品国产| 久久国产高清| 91亚洲人成网污www| 999精品一区| 亚洲一区区二区| 国产欧美日韩精品高清二区综合区| 日韩综合在线| 日韩一区精品| 国产不卡一区| 亚洲香蕉网站| 97久久超碰| 国产不卡av一区二区| 综合亚洲视频| 超碰在线99| 蜜桃免费网站一区二区三区| 国产精品视频首页| 久久国产精品免费一区二区三区|