快速业务通道

Java线程:新特征-障碍器 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19

Java线程:新特征-障碍器

时间:2011-02-20 51cto博客 leizhimin

障碍器是多线程并发控制的一种手段,用法很简单。下面给个例子:

import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; /** * Java线程:新特征-障碍器 * * @author leizhimin  */ public class Test {          public static void main(String[] args) {                  //创建障碍器,并设置MainTask为所有定数量的线程都达到障碍点时候所要执行的任务(Runnable)                  CyclicBarrier cb = new CyclicBarrier(7, 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("F", cb).start();                  new SubTask("G", cb).start();          } } /** * 主任务 */ class MainTask implements Runnable {          public void run() {                  System.out.println(">>>>主任务执行了!<<<<");          } } /** * 子任务 */ class SubTask extends Thread {          private String name;          private CyclicBarrier cb;          SubTask(String name, CyclicBarrier cb) {                  this.name = name;                  this.cb = cb;          }          public void run() {                  System.out.println("[子任务" + name + "]开始执行了!");                  for (int i = 0; i < 999999; i++) ;    //模拟耗时的任务                  System.out.println("[子任务" + name + "]开始执行完成了,并通知障碍器已经完成!");                  try {                          //通知障碍器已经完成                          cb.await();                  } catch (InterruptedException e) {                          e.printStackTrace();                  } catch (BrokenBarrierException e) {                          e.printStackTrace();                  }          } }

运行结果:

[子任务E]开始执行了! [子任务E]开始执行完成了,并通知障碍器已经完成! [子任务F]开始执行了! [子任务G]开始执行了! [子任务F]开始执行完成了,并通知障碍器已经完成! [子任务G]开始执行完成了,并通知障碍器已经完成! [子任务C]开始执行了! [子任务B]开始执行了! [子任务C]开始执行完成了,并通知障碍器已经完成! [子任务D]开始执行了! [子任务A]开始执行了! [子任务D]开始执行完成了,并通知障碍器已经完成! [子任务B]开始执行完成了,并通知障碍器已经完成! [子任务A]开始执行完成了,并通知障碍器已经完成! >>>>主任务执行了!<<<< Process finished with exit code 0

从执行结果可以看出,所有子任务完成的时候,主任务执行了,达到了控制的目标。

出处:http://lavasoft.blog.51cto.com/62575/222738

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号