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

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

Java并發編程之閉鎖與柵欄的實現

瀏覽:3日期:2022-09-02 10:52:28

一、前言

閉鎖與柵欄是在多線程編程中的概念,因為在多線程中,我們不能控制線程的執行狀態,所以給線程加鎖,讓其按照我們的想法有秩序的執行。

閉鎖

CountDownLatch,實例化時需要傳入一個int類型的數字(count),意為等待count個線程完成之后才能執行下一步動作。

如今天要做的事情是吃晚飯,再去散步。假設11個人相約晚飯后一起去散步,我們得等11個人全都吃完晚飯了才能出發去散步。簡而言之就是做了才到達某一種狀態。

柵欄

CyclicBarrier,實例化時需要傳入一個int類型的數字(parties),意為等待parties個線程都準備就緒后才能執行自己的任務。

如今天要做的事情是吃晚飯,8個人約好一起去某餐廳吃飯,得等到人齊了才能去吃飯。簡而言之就是到達某種狀態后一起做。

二、實例

閉鎖 CountDownLatch

package com.test; import java.util.ArrayList;import java.util.List;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CountDownLatch; public class Test { public static void main(String[] args) { CountDownLatch latch = new CountDownLatch(3); // 模擬三個任務 List<String> jobs = new ArrayList<String>(); jobs.add('first'); jobs.add('second'); jobs.add('third'); // 循環執行任務 for (String job : jobs) { new Thread(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName() + ' : 進入run方法'); latch.countDown(); System.out.println(Thread.currentThread().getName() + ' : 執行' + job); } }).start(); } try { latch.await(); } catch (InterruptedException e) { e.printStackTrace(); } // 任務都執行完后才執行 System.out.println('回到main線程'); } }

執行結果:

Thread-1 : 進入run方法

Thread-2 : 進入run方法

Thread-2 : 執行third

Thread-0 : 進入run方法

Thread-1 : 執行second

Thread-0 : 執行first

回到main線程

通過執行結果可看出,當所有線程都執行完后才能回到主線程繼續執行后面的輸出。

柵欄 CyclicBarrier

package com.test; import java.util.ArrayList;import java.util.List;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier; public class Test { public static void main(String[] args) { CyclicBarrier barrier = new CyclicBarrier(3); // 模擬創建三個任務 List<String> jobs = new ArrayList<String>(); jobs.add('first'); jobs.add('second'); jobs.add('third'); //循環執行任務 for (String job : jobs) { new Thread(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName() + ' : 進入run方法'); try { // 等待 barrier.await(); } catch (InterruptedException | BrokenBarrierException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + ' : 執行' + job); } }).start(); } } }

執行結果:

Thread-1 : 進入run方法

Thread-2 : 進入run方法

Thread-0 : 進入run方法

Thread-0 : 執行first

Thread-1 : 執行second

Thread-2 : 執行third

通過執行結果可看出,當所有線程都執行都進入到run方法后,才能繼續執行自己內部的方法。

到此這篇關于Java并發編程之閉鎖與柵欄的實現的文章就介紹到這了,更多相關Java 閉鎖與柵欄內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 焊接烟尘净化器__焊烟除尘设备_打磨工作台_喷漆废气治理设备 -催化燃烧设备 _天津路博蓝天环保科技有限公司 | 锡膏喷印机-全自动涂覆机厂家-全自动点胶机-视觉点胶机-深圳市博明智控科技有限公司 | 集装箱标准养护室-集装箱移动式养护室-广州璟业试验仪器有限公司 | 柴油机_柴油发电机_厂家_品牌-江苏卡得城仕发动机有限公司 | 深圳诚暄fpc首页-柔性线路板,fpc柔性线路板打样生产厂家 | 欧洲MV日韩MV国产_人妻无码一区二区三区免费_少妇被 到高潮喷出白浆av_精品少妇自慰到喷水AV网站 | 断桥铝破碎机_铝合金破碎机_废铁金属破碎机-河南鑫世昌机械制造有限公司 | 商标转让-购买商标专业|放心的商标交易网-蜀易标商标网 | 代理记账_免费注册公司_营业执照代办_资质代办-【乐财汇】 | 中开泵,中开泵厂家,双吸中开泵-山东博二泵业有限公司 | 冷热冲击试验箱_温度冲击试验箱价格_冷热冲击箱排名_林频厂家 | 撕碎机_轮胎破碎机_粉碎机_回收生产线厂家_东莞华达机械有限公司 | 聚合氯化铝厂家-聚合氯化铝铁价格-河南洁康环保科技 | 120kv/2mA直流高压发生器-60kv/2mA-30kva/50kv工频耐压试验装置-旭明电工 | 成都APP开发-成都App定制-成都app开发公司-【未来久】 | 震动筛选机|震动分筛机|筛粉机|振筛机|振荡筛-振动筛分设备专业生产厂家高服机械 | 河南空气能热水器-洛阳空气能采暖-洛阳太阳能热水工程-洛阳润达高科空气能商行 | 渗透仪-直剪仪-三轴仪|苏州昱创百科 | 植筋胶-粘钢胶-碳纤维布-碳纤维板-环氧砂浆-加固材料生产厂家-上海巧力建筑科技有限公司 | 砂磨机_立式纳米砂磨机_实验室砂磨机-广州儒佳化工设备厂家 | 超声波清洗机-超声波清洗设备定制生产厂家 - 深圳市冠博科技实业有限公司 | 河南道路标志牌_交通路标牌_交通标志牌厂家-郑州路畅交通 | 马尔表面粗糙度仪-MAHR-T500Hommel-Mitutoyo粗糙度仪-笃挚仪器 | 硫化罐_蒸汽硫化罐_大型硫化罐-山东鑫泰鑫智能装备有限公司 | 深圳市宏康仪器科技有限公司-模拟高空低压试验箱-高温防爆试验箱-温控短路试验箱【官网】 | 河南mpp电力管_mpp电力管生产厂家_mpp电力电缆保护管价格 - 河南晨翀实业 | 美国查特CHART MVE液氮罐_查特杜瓦瓶_制造全球品质液氮罐 | 高低温万能试验机-复合材料万能试验机-馥勒仪器 | TPE_TPE热塑性弹性体_TPE原料价格_TPE材料厂家-惠州市中塑王塑胶制品公司- 中塑王塑胶制品有限公司 | 电缆桥架生产厂家_槽式/梯式_热镀锌线槽_广东东莞雷正电气 | 北京公司注册_代理记账_代办商标注册工商执照-企力宝 | 韦伯电梯有限公司| 换网器_自动换网器_液压换网器--郑州海科熔体泵有限公司 | 代写标书-专业代做标书-商业计划书代写「深圳卓越创兴公司」 | 3d打印服务,3d打印汽车,三维扫描,硅胶复模,手板,快速模具,深圳市精速三维打印科技有限公司 | 线粒体膜电位荧光探针-细胞膜-标记二抗-上海复申生物科技有限公司 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 | 浙江美尔凯特智能厨卫股份有限公司 | 自进式锚杆-自钻式中空注浆锚杆-洛阳恒诺锚固锚杆生产厂家 | 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA | TYPE-C厂家|TYPE-C接口|TYPE-C防水母座|TYPE-C贴片-深圳步步精 |