Java 同步器

 

 

 

 

 

 

 

 

 

 

CyclicBarrier是什么

CyclicBarrier也叫同步屏障,在JDK1.5被引入,可以让一组线程达到一个屏障时被阻塞,直到最后一个线程达到屏障时,所以被阻塞的线程才能继续执行。
CyclicBarrier好比一扇门,默认情况下关闭状态,堵住了线程执行的道路,直到所有线程都就位,门才打开,让所有线程一起通过。

构造方法

  1. 默认的构造方法是CyclicBarrier(int parties),其参数表示屏障拦截的线程数量,每个线程调用await方法告诉CyclicBarrier已经到达屏障位置,线程被阻塞。
  2. 另外一个构造方法CyclicBarrier(int parties, Runnable barrierAction),其中barrierAction任务会在所有线程到达屏障后执行。

CyclicBarrier.png

应用场景

想象一个场景,运动会男子100米决赛,8名选手。

Athlete.java :每个运动员都就位后才开始。

class Athlete implements Runnable {private CyclicBarrier cyclicBarrier;private String name;public Athlete(CyclicBarrier cyclicBarrier, String name) {this.cyclicBarrier = cyclicBarrier;this.name = name;}@Overridepublic void run() {System.out.println(name + "就位");try {cyclicBarrier.await();Random random =new Random();double time = random.nextDouble() + 9;System.out.println(name + ": "+ time);} catch (Exception e) {}}
}

Race.java : 负责屏障的初始化。

class Race {private CyclicBarrier cyclicBarrier = new CyclicBarrier(8);public void start() {List<Athlete> athleteList = new ArrayList<>();athleteList.add(new Athlete(cyclicBarrier,"博尔特"));athleteList.add(new Athlete(cyclicBarrier,"鲍威尔"));athleteList.add(new Athlete(cyclicBarrier,"盖伊"));athleteList.add(new Athlete(cyclicBarrier,"布雷克"));athleteList.add(new Athlete(cyclicBarrier,"加特林"));athleteList.add(new Athlete(cyclicBarrier,"苏炳添"));athleteList.add(new Athlete(cyclicBarrier,"路人甲"));athleteList.add(new Athlete(cyclicBarrier,"路人乙"));Executor executor = Executors.newFixedThreadPool(8);for (Athlete athlete : athleteList) {executor.execute(athlete);}}
}

 

 

转载于:https://www.cnblogs.com/diegodu/p/7339423.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/416188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mongoose populate 返回 指定 字段

1、mongoose中一个数据模型Product(商品)关联另外一个数据模型Brand(品牌)需要使用ref&#xff0c;关联查询使用populate Product模型 new mongoose.Schema({// 商品名称name: { type: String, required: true, validate: /\S/ },// 商品内容content: { type: String, requir…

凯斯西储大学计算机工程排名,[转载]凯斯西储大学排名及世界排名【研究生】...

商学院工商管理托福90分或雅思7分&#xff0c;GMAT&#xff0c;GPA要求3.0以上&#xff0c;学费$37,500/年&#xff0c;申请截止日期6月1日会计托福100分或雅思7分&#xff0c;GMAT&#xff0c;GMAT阅读百分比排名在50%以上&#xff0c;写作在4.0分以上&#xff0c;GPA要求2.0以…

SMB MS17-010 利用(CVE-2017-0144 )

exploit-db : https://www.exploit-db.com/exploits/42315/ 该漏洞的影响版本很广泛&#xff1a;Microsoft Windows Windows 7/8.1/2008 R2/2012 R2/2016 R2 - EternalBlue SMB Remote Code Execution (MS17-010) 具体请查看公告&#xff1a;Microsoft 安全公告 MS17-010 - 严重…

麻省理工学院计算机专业2018,麻省理工学院专业排名一览及最强专业推荐(QS世界大学排名)...

麻省理工学院优势专业介绍电子工程、机械工程、物理学、化学、经济学、哲学、政治学?麻省理工学院专业排名麻省理工学院会计与金融专业在2018年QS世界排名中排名第2麻省理工学院建筑专业在2018年QS世界排名中排名第1麻省理工学院艺术与设计专业在2018年QS世界排名中排名第4麻省…

nuxt route 全局管理 route.beforeEach 替代

在使用nuxt之前&#xff0c;我们正常的route控制语法如下&#xff1a; const route new Router({routes:{[...]} })route.beforeEach(to,from,next){//进行路由权限校验等方法 } 而使用nuxt&#xff0c;路由默认会根据页面的路径规则自动生成&#xff0c;所以乍一看根本没有…

计算机硬盘的主流型号,四款主流2.5英寸笔记本机械硬盘性能对比

虽说固态硬盘已经逐渐成为了主流&#xff0c;但是对于普通的笔记本用户来说&#xff0c;传统的2.5英寸机械硬盘则是笔记本扩容的首选&#xff0c;毕竟现在一款1TB的笔记本机械硬盘价格不到400元&#xff0c;而1TB的固态硬盘无论是什么接口&#xff0c;价格都能买好几个机械硬盘…

mac 查看 ssh key

这里记录一下最基本的操作 1、进入目录 cd ~/.ssh 2、查看目录下文件 ls 3、用编辑器打开&#xff0c;复制一下内容 vim id_rsa.pub

研究人员用数据统计的方法来做文学研究

研究人员用数据统计的方法来做文学研究 大数据与文学&#xff0c;一个是理性工具&#xff0c;一个是感性思维&#xff0c;看起来似乎不沾边。但如今&#xff0c;二者的联系却日渐紧密起来&#xff0c;也由此引发了不少争议。 谁是最爱往外跑的诗人&#xff1f; 唐宋时期最爱往外…

西电继续教育计算机试题答案,西安电子科技大学网络与继续教育学院微机原理试题...

西安电子科技大学网络与继续教育学院微机原理试题5. MOV AX&#xff0c;[BP][DI] 13H 指令的源操作数的寻址方式为 。6.若(DS)0100H ,(SS)0150H ,(BX)0003H ,(BP)0003H ,存储器(01003H)5566H,(01503H)7788H,则CPU执行:MOV AL,[BX]指令后,(AL) &#xff0c;CPU执行MOV AX,[BP]指…

阿里云 centos ssh key 客户端 无密码登录 ssh 登录

准备工作&#xff1a;刚购买了阿里云&#xff0c;使用登录账号密码&#xff0c;其次我的mac电脑已经生产了ssh-key啦。使用ssh-key登录阿里云只需要一步设置&#xff1a; ssh-copy-id -i ~/.ssh/id_rsa.pub root139.196.85.194 然后乖乖得输入服务器密码&#xff0c;按下回车。…

vim中如何设置多行注释和删除注释

多行注释&#xff1a; 1. 进入命令行模式&#xff0c;按ctrl v进入 visual block模式&#xff0c;然后按j, 或者k选中多行&#xff0c;把需要注释的行标记起来 2. 按大写字母I&#xff0c;再插入注释符&#xff0c;例如# 3. 按esc键然后按下enter就会全部注释了 取消多行注释&…

新疆缺少计算机网络技术吗,新疆阿克苏职业技术学院的计算机网络技术专业好不?...

类似问题答案2021年山西信息职业技术学院单独计算机网络类(计算机网络技术、计算机系统与维护、...2.计算机网络类(计算机网络技术、计算机系统与维护、信息安全与管理) 该类主要学习网络工程设计与安装、网站开发、网络操作系统、计算机组装与维护、网络组建管理与维护、网络综…

centos 生成 ssh-key github 连接 配置

我的环境是阿里云centos7。 1、生成ssh-key&#xff0c;填入自己的邮箱 ssh-keygen -t rsa -C "xxxxxx126.com" 2、进入ssh目录 cd ~/.ssh 3、查看文件 ls 会看到列举出了有id_rsa、id_rsa.pub。 4、复制一下id_rsa.pub文件内容 cat id_rsa.pub 5、打开git…

[bzoj1036]树的统计

链剖好难调啊~调了半个小时&#xff0c;终于发现线段树写挂了233 唉&#xff0c;我真是个假人~ Description 一棵树上有n个节点&#xff0c;编号分别为1到n&#xff0c;每个节点都有一个权值w。我们将以下面的形式来要求你对这棵树完成一些操作&#xff1a; I. CHANGE u t : 把…