一 描述

CyclicBarrier初始化时规定一个数目,然后计算调用了CyclicBarrier.await()进入等待的线程数。当线程数达到了这个数目时,所有进入等待状态的线程被唤醒并继续。
CyclicBarrier就象它名字的意思一样,可看成是个障碍, 所有的线程必须到齐后才能一起通过这个障碍。
CyclicBarrier初始时还可带一个Runnable的参数, 此Runnable任务在CyclicBarrier的数目达到后,所有其它线程被唤醒前被执行。

二 代码实例

 public class CyclicBarrierDemo {

     private static final int THREAD_NUM = 5;

     public static class WorkerThread implements Runnable {

         CyclicBarrier barrier;

         public WorkerThread(CyclicBarrier b) {
this.barrier = b;
} public void run() {
try {
System.out.println("Worker's waiting");
//线程在这里等待,直到所有线程都到达barrier
barrier.await();
System.out.println("ID:" + Thread.currentThread().getId() + " Working");
} catch (Exception e) {
e.printStackTrace();
}
}
} public static void main(String[] args) {
//当所有线程到达barrier时执行
CyclicBarrier cb = new CyclicBarrier(THREAD_NUM, () -> System.out.println("Inside Barrier")); for (int i = 0; i < THREAD_NUM; i++) {
new Thread(new WorkerThread(cb)).start();
}
}
}

输出结果

Worker's waiting
Worker's waiting
Worker's waiting
Worker's waiting
Worker's waiting
Inside Barrier
ID: Working
ID: Working
ID: Working
ID: Working
ID: Working

最新文章

  1. 为Windows Azure Web站点添加MIME类型解决文件下载失败的问题
  2. adb 服务端口2037被占,导致adb和appium无法工作
  3. C#的timer类
  4. C# lambda表达式及初始化器
  5. Solr5.3.1 SolrJ查询索引结果
  6. Secure Socket Tunneling Protocol Service服务无法启动(win7)
  7. linq的创建 和 数据的增删改查
  8. CentOS下编译安装MySQL 5.6.21
  9. CentOs of Tomcat commands
  10. 【转】Java之 内存区域和GC机制
  11. [Hive - Tutorial] Querying and Inserting Data 查询和插入数据
  12. 【Tomcat源码学习】-5.请求处理
  13. Python的几个常用模块
  14. asp.net 限制上传文件的大小与时间
  15. nginx访问502 gateway,*1 connect() failed (111: Connection refused) while connecting to upstream
  16. JVM笔记(虚拟机各内存的介绍)
  17. redis的主从机制 master&amp;slave
  18. laravel----------如何优化laravel框架
  19. CSS3伪类和伪元素
  20. Hbase-2.0.0_03_Hbase数据模型

热门文章

  1. docker部署项目: centos+python+redis+mysql+uwsgi+nginx
  2. topcoder13444
  3. Postman集合/文件夹/请求中脚本的执行顺序
  4. 如何检测域名是否被微信屏蔽 微信域名检测接口API是如何实现
  5. html,css,js实现的一个钟表
  6. postgresql获取表最后更新时间(通过触发器将时间写入另外一张表)
  7. QT 多线程程序设计 -互斥
  8. POJ 3083 -- Children of the Candy Corn(DFS+BFS)TLE
  9. vscode 设置 eclipse 快捷键
  10. Map构造器模式 map builder pattern