电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java并發編程之詳解CyclicBarrier線程同步

瀏覽:7日期:2022-08-10 08:42:31
CyclicBarrier線程同步

java.util.concurrent.CyclicBarrier提供了一種多線程彼此等待的同步機制,可以把它理解成一個障礙,所有先到達這個障礙的線程都將將處于等待狀態,直到所有線程都到達這個障礙處,所有線程才能繼續執行。

舉個例子:CyclicBarrier的同步方式有點像朋友們約好了去旅游,在景點入口處集合,這個景點入口就是一個Barrier障礙,等待大家都到了才一起進入景點游覽參觀。 進入景點后大家去爬山,有的人爬得快,有的人爬的慢,大家約好了山頂集合,所以山頂就又是一個Barrier障礙,等待大家都到了山頂才一起下山。

下面是一張圖來說明這個問題。

Java并發編程之詳解CyclicBarrier線程同步

每個線程通過調用await(),在CyclicBarrier障礙處“彼此等待”,一旦所有的線程都到達了CyclicBarrier(都調用了CyclicBarrier方法),所有的線程將一起再次被喚醒繼續執行。

1.創建CyclicBarrier障礙

當創建CyclicBarrier的時候,需要指定需要控制多少個線程同步。比如下面的CyclicBarrier設置為控制2個線程同步。

CyclicBarrier barrier = new CyclicBarrier(2);2. 在CyclicBarrier障礙處等待

通過調用CyclicBarrier的await()方法進入等待狀態,通常在線程完成自己的階段性任務之后調用該方法。

barrier.await();

CyclicBarrier也提供了另一種方法指定等待超時的時間,當等待時間大于超時時間之后,即使還有其他的線程沒調用await方法,該線程將自動喚醒繼續執行。(朋友們約好了去旅游,等了10分鐘你還不來,我就自己先去了)。

barrier.await(10, TimeUnit.SECONDS);

The waiting threads waits at theCyclicBarrieruntil either:

在CyclicBarrier處等待的線程被釋放,繼續執行的條件(滿足下面的任一條件即可)

最后到達的線程調用了await() 方法 該線程被另一個線程打斷(另一個線程調用其interrupt()方法)。 另一個處于等待狀態的線程被打斷 另一個處于等待狀態的線程在CyclicBarrier處等待時超時。 某個外部線程調用了CyclicBarrier.reset()拆除障礙。3. CyclicBarrier Action

CyclicBarrier Action 相對不太好理解,可以把它理解為障礙自身的行為。該Action動作是一個線程,所有的線程都到達障礙之后,該線程將被執行。

Runnable barrierAction = 創建線程;CyclicBarrier barrier = new CyclicBarrier(2, barrierAction);

如果這段代碼仍然無法理解CyclicBarrier Action的作用,看下面的例子。

4. CyclicBarrier 例子

下面的代碼演示了如何使用CyclicBarrier進行線程同步:

Runnable barrier1Action = new Runnable() { public void run() {System.out.println('障礙1集合成功了,所有人都到了景點門口 '); }};Runnable barrier2Action = new Runnable() { public void run() {System.out.println('障礙2集合成功了,所有人都到了山頂'); }};//障礙1 景點門口CyclicBarrier barrier1 = new CyclicBarrier(2, barrier1Action);//障礙2 山頂CyclicBarrier barrier2 = new CyclicBarrier(2, barrier2Action);//旅游計劃,階段目標一:景點門口集合CyclicBarrierRunnable barrierRunnable1 =new CyclicBarrierRunnable(barrier1, barrier2);//旅游計劃,階段目標二:爬山到山頂集合CyclicBarrierRunnable barrierRunnable2 =new CyclicBarrierRunnable(barrier1, barrier2);new Thread(barrierRunnable1).start(); //游客A,Thread-0new Thread(barrierRunnable2).start(); //游客B,Thread-1

下面是一個線程類CyclicBarrierRunnable,啟動一個就代表一個游客

public class CyclicBarrierRunnable implements Runnable{ CyclicBarrier barrier1 = null; //障礙1 CyclicBarrier barrier2 = null; //障礙2 public CyclicBarrierRunnable( CyclicBarrier barrier1,CyclicBarrier barrier2) {this.barrier1 = barrier1;this.barrier2 = barrier2; } public void run() {try { Thread.sleep(1000); //這里寫出發去景點的過程代碼 System.out.println(Thread.currentThread().getName() +' 到達景點門口'); this.barrier1.await(); Thread.sleep(1000); //這里寫爬山的過程代碼 System.out.println(Thread.currentThread().getName() +' 爬山爬到山頂'); this.barrier2.await(); System.out.println(Thread.currentThread().getName() +' 玩的不錯,下山回家!');} catch (InterruptedException e) { e.printStackTrace();} catch (BrokenBarrierException e) { e.printStackTrace();} }}

下面的輸出是上文代碼的執行打印結果,多執行幾次上文的代碼會發現Thread-0 和 Thread-1 在障礙1和障礙2處的到達先后順序是不確定的,但是總是先到的等后到的再繼續執行。

Thread-0 到達景點門口Thread-1 到達景點門口障礙1集合成功了,所有人都到了景點門口Thread-1 爬山爬到山頂Thread-0 爬山爬到山頂障礙2集合成功了,所有人都到了山頂Thread-0 玩的不錯,下山回家!Thread-1 玩的不錯,下山回家!

到此這篇關于Java并發編程之詳解CyclicBarrier線程同步的文章就介紹到這了,更多相關CyclicBarrier線程同步內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 斗式提升机_链式斗提机_带式斗提机厂家无锡市鸿诚输送机械有限公司 | 换网器_自动换网器_液压换网器--郑州海科熔体泵有限公司 | LHH药品稳定性试验箱-BPS系列恒温恒湿箱-意大利超低温冰箱-上海一恒科学仪器有限公司 | 成都装修公司-成都装修设计公司推荐-成都朗煜装饰公司 | 间苯二酚,间苯二酚厂家-淄博双和化工 | 上海宿田自动化设备有限公司-双面/平面/单面贴标机 | MVE振动电机_MVE震动电机_MVE卧式振打电机-河南新乡德诚生产厂家 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 | 聚天冬氨酸,亚氨基二琥珀酸四钠,PASP,IDS - 远联化工 | 网优资讯-为循环资源、大宗商品、工业服务提供资讯与行情分析的数据服务平台 | 兰州UPS电源,兰州山特UPS-兰州万胜商贸 | 气弹簧定制-气动杆-可控气弹簧-不锈钢阻尼器-工业气弹簧-可调节气弹簧厂家-常州巨腾气弹簧供应商 | 挤出机_橡胶挤出机_塑料挤出机_胶片冷却机-河北伟源橡塑设备有限公司 | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | 苹果售后维修点查询,苹果iPhone授权售后维修服务中心 – 修果网 拼装地板,悬浮地板厂家,悬浮式拼装运动地板-石家庄博超地板科技有限公司 | 多物理场仿真软件_电磁仿真软件_EDA多物理场仿真软件 - 裕兴木兰 | 诺冠气动元件,诺冠电磁阀,海隆防爆阀,norgren气缸-山东锦隆自动化科技有限公司 | 北京宣传片拍摄_产品宣传片拍摄_宣传片制作公司-现像传媒 | 运动木地板厂家,篮球场木地板品牌,体育场馆木地板安装 - 欧氏运动地板 | 手机存放柜,超市储物柜,电子储物柜,自动寄存柜,行李寄存柜,自动存包柜,条码存包柜-上海天琪实业有限公司 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | 耐破强度测试仪-纸箱破裂强度试验机-济南三泉中石单品站 | 变位机,焊接变位机,焊接变位器,小型变位机,小型焊接变位机-济南上弘机电设备有限公司 | 定时排水阀/排气阀-仪表三通旋塞阀-直角式脉冲电磁阀-永嘉良科阀门有限公司 | 蒜肠网-动漫,二次元,COSPLAY,漫展以及收藏型模型,手办,玩具的新媒体.(原变形金刚变迷TF圈) | Dataforth隔离信号调理模块-信号放大模块-加速度振动传感器-北京康泰电子有限公司 | MVR蒸发器厂家-多效蒸发器-工业废水蒸发器厂家-康景辉集团官网 | 优考试_免费在线考试系统_培训考试系统_题库系统_组卷答题系统_匡优考试 | 鹤壁创新仪器公司-全自动量热仪,定硫仪,煤炭测硫仪,灰熔点测定仪,快速自动测氢仪,工业分析仪,煤质化验仪器 | 无线遥控更衣吊篮_IC卡更衣吊篮_电动更衣吊篮配件_煤矿更衣吊篮-力得电子 | 压砖机、液压制砖机、静压砖机、环保砖机生产厂家—杜甫机械 | 西宁装修_西宁装修公司-西宁业之峰装饰-青海业之峰墅级装饰设计公司【官网】 | 美国PARKER齿轮泵,美国PARKER柱塞泵,美国PARKER叶片泵,美国PARKER电磁阀,美国PARKER比例阀-上海维特锐实业发展有限公司二部 | 灌木树苗-绿化苗木-常绿乔木-价格/批发/基地 - 四川成都途美园林 | 不锈钢反应釜,不锈钢反应釜厂家-价格-威海鑫泰化工机械有限公司 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 飞扬动力官网-广告公司管理软件,广告公司管理系统,喷绘写真条幅制作管理软件,广告公司ERP系统 | 山东柳店新能源科技有限公司 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 首页|专注深圳注册公司,代理记账报税,注册商标代理,工商变更,企业400电话等企业一站式服务-慧用心 | 水质传感器_水质监测站_雨量监测站_水文监测站-山东水境传感科技有限公司 | 代理记账_免费注册公司_营业执照代办_资质代办-【乐财汇】 |