java的CyclicBarrier
CyclicBarrier直译叫循环屏障,作用有点像赛跑时吹哨的角色,它有2个构造方法,一个是int的arg1,另一个多了一个Runable的arg2
arg1:可以看做此次参加赛跑的人数
arg2:可以看做是吹哨这个动作它是在所有人都已经准备好后且在开跑前执行
public class Test { private static Executor executor = Executors.newCachedThreadPool(); public static void main(String[] args) throws InterruptedException {
int sporterCount = 5;
CyclicBarrier cyclicBarrier = new CyclicBarrier(sporterCount, new Runnable() {
@Override
public void run() {
System.out.println("吹黑哨。。。");
}
});
for (int i = 0; i < sporterCount; i++) {
executor.execute(new Sporter(i + 1, cyclicBarrier));
}
}
} class Sporter implements Runnable { private int no;
private CyclicBarrier cyclicBarrier; public Sporter(int no, CyclicBarrier cyclicBarrier) {
this.no = no;
this.cyclicBarrier = cyclicBarrier;
} @Override
public void run() {
System.out.println("第" + no + "号已经准备好");
try {
this.cyclicBarrier.await();//通知吹黑哨的准备好了
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
System.out.println("第" + no + "号已开跑");
}
}
输出结果:
第1号已经准备好
第4号已经准备好
第3号已经准备好
第5号已经准备好
第2号已经准备好
吹黑哨。。。
第2号已开跑
第1号已开跑
第4号已开跑
第3号已开跑
第5号已开跑
最后他还有个reset()方法进行重置,这样就继续用于下一场比赛了。。。
这个东西就这么简单,有兴趣也可以看看内部实现,也不复杂~~哈哈
java的CyclicBarrier的更多相关文章
- java中CyclicBarrier的使用
文章目录 CyclicBarrier的方法 CyclicBarrier的使用 java中CyclicBarrier的使用 CyclicBarrier是java 5中引入的线程安全的组件.它有一个bar ...
- Java线程--CyclicBarrier使用
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11867687.html Java线程--CyclicBarrier使用, 代码里头有详细注释: ...
- Java - "JUC" CyclicBarrier源码分析
Java多线程系列--“JUC锁”10之 CyclicBarrier原理和示例 CyclicBarrier简介 CyclicBarrier是一个同步辅助类,允许一组线程互相等待,直到到达某个公共屏障点 ...
- java中CyclicBarrier简单入门使用
一个同步辅助类,它同意一组线程互相等待,直到到达某个公共屏障点 (common barrier point). 在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待.此时 CyclicBarr ...
- java路障CyclicBarrier
当所有线程都执行到某行代码,才可已往下执行: package threadLock; import java.util.Random; import java.util.concurrent.Brok ...
- Java锁--CyclicBarrier
转载请注明出处:http://www.cnblogs.com/skywang12345/p/3533995.html CyclicBarrier简介 CyclicBarrier是一个同步辅助类,允许一 ...
- java多线程-CyclicBarrier
介绍 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBa ...
- Java之CyclicBarrier使用,任务等待
1.类说明: 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 Cycl ...
- Java之CyclicBarrier使用
http://blog.csdn.net/shihuacai/article/details/8856407 1.类说明: 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (commo ...
随机推荐
- E - Trees on the level
Trees on the level Background Trees are fundamental in many branches of computer science. Current ...
- [Java] Eclipse注释模板设置详解
设置注释模板的入口: Window->Preference->Java->Code Style->Code Template 然后展开Comments节点就是所有需设置注释的元 ...
- Android(java)学习笔记100:android开发中修改字体
首先如果android内部自带的字体不是我们需要的字体,那我们就需要字体文件导入到android开发工程中,下午我们详细讲述: 1.我们首先分析知道,我想要TextView控件中文字的字体是:华文楷体 ...
- ie6 7 8 9 firefox的css兼容问题
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- cmd运行java,含传参,引用jar
1,创建一个java project,完成编码 在Eclipse的资源管理器中选中你要打包的项目,右键点击,选择“导出”项,弹出导出对话框,在下面的Java目录下选择“JAR 文件”项,下一步,在导出 ...
- mongoDB 用java连接
(1)下载连接java 的驱动包mongo-2.10.1.jar 下载网址 https://github.com/mongodb/mongo-java-driver/downloads (2)导入下载 ...
- linux编辑器 vi的使用
vi 编辑器的三个模式: 命令模式 开始就是命令模式 insert模式 i, I, a, A, o,O ,s, S 命令行模式 : i 在当前位置进入Insert模式 I 在行的头部进入Inser ...
- C++STL学习笔记_(4)queue
10.2.5Queue容器 Queue简介 ² queue是队列容器,是一种"先进先出"的容器. ² queue是简单地装饰deque容器而成为另外的一种容器. ² #inc ...
- [算法练习] UVA-401-Palindromes
UVA Online Judge 题目401 Palindromes 回文串 问题描述: 回文串(Palindromes)就是正着读和反着读完全一样的字符串,例如"ABCDEDCBA&qu ...
- css禁止双击dom节点被选中user-select:none
css禁止dom节点被选中: 当某个dom节点在快速重复点击的时候出现这个节点被选中,有时候其实并不希望出现这种情况,比如我们使用一个span或者a标签做为按钮dom元素的时候,快速双击这个按钮,就 ...