多线程-障碍器
来源:互联网 发布:金融支付 数据挖掘 编辑:程序博客网 时间:2024/04/30 16:56
Java5中,添加了障碍器类,为了适应一种新的设计需求,比如一个大型的任务,常常需要分配好多子任务去执行,只有当所有子任务都执行完成时候,才能执行主任务,这时候,就可以选择障碍器了。
package barrier;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;public class TestBarrier {public static void main(String[] args){new TestBarrier().run();}public void run(){CyclicBarrier cb = new CyclicBarrier(10, new MainTask());new SubTask("A",cb).start();new SubTask("B",cb).start();new SubTask("C",cb).start();new SubTask("D",cb).start();new SubTask("E",cb).start();new SubTask("AA",cb).start();new SubTask("BB",cb).start();new SubTask("CC",cb).start();new SubTask("DD",cb).start();new SubTask("EE",cb).start();}class MainTask implements Runnable{@Overridepublic void run() {System.out.println("主任务开始执行");}}class SubTask extends Thread{private String name;private CyclicBarrier cb;public SubTask(String name, CyclicBarrier cb){this.name = name;this.cb = cb;}@Overridepublic void run() {System.out.println("子任务["+name+"]开始执行。。。");for(int i=0; i<99999999; i++);System.out.println("子任务"+name+"执行完成,并通知障碍器");try {//wait until all parties invoke await on this barriercb.await();} catch (InterruptedException | BrokenBarrierException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
子任务[A]开始执行。。。
子任务[E]开始执行。。。
子任务[AA]开始执行。。。
子任务[C]开始执行。。。
子任务[B]开始执行。。。
子任务[D]开始执行。。。
子任务C执行完成,并通知障碍器
子任务[CC]开始执行。。。
子任务[BB]开始执行。。。
子任务CC执行完成,并通知障碍器
子任务AA执行完成,并通知障碍器
子任务BB执行完成,并通知障碍器
子任务[DD]开始执行。。。
子任务DD执行完成,并通知障碍器
子任务A执行完成,并通知障碍器
子任务B执行完成,并通知障碍器
子任务D执行完成,并通知障碍器
子任务E执行完成,并通知障碍器
子任务[EE]开始执行。。。
子任务EE执行完成,并通知障碍器
主任务开始执行
0 0
- java多线程--障碍器
- 多线程 - 障碍器CyclicBarrier
- 多线程-障碍器
- 障碍器
- Java 障碍器
- 新特征-障碍器
- java线程 障碍器
- Java线程:新特征-障碍器
- Java线程:新特征-障碍器
- Java线程:新特征-障碍器(1)
- Java线程:新特征-障碍器(2)
- Java线程:新特征-障碍器
- Java线程:新特征-障碍器
- Java线程:新特征-障碍器
- Java线程:新特征-障碍器
- Java线程:新特征-障碍器
- Java线程:新特征-障碍器
- Java线程:新特征-障碍器
- Spring @Resource、@Autowired、@Qualifier的注解注入及区别
- SQLite数据库增删改查
- 未能加载文件或程序集之类的问题
- linux 目录的用途,应当存放的内容
- Chromium 源代码目录结构
- 多线程-障碍器
- Icons、色彩配置网站分享
- PCB的布线规则
- 第十五单元总结
- spring cvc-elt.1: Cannot find the declaration of element 'beans'解决办法
- 简述安卓框架发展史一(没有mvc,到流行的mvc框架样式)
- php扩展开发
- loadrunner:文本检查点web_reg_find和web_find两个函数的区别
- 二叉树的所有路径