高级并发编程学习之cyclicBarrier
来源:互联网 发布:淘宝9活动都有什么 编辑:程序博客网 时间:2024/05/21 08:42
同步工具之cyclicBarrier
表示大家彼此等待,等大家集合号以后才开始出发。分散活动后又在指定地点集合碰面,好像公司利用周末时间集体郊游一样,先从各自家出发到公司集合后,再同时出发到公园游玩,先到的阻塞等待,从最后到的开始,在指定地点集合后再开始就餐。
package com.lei.lock;/**@author leixingbang_sx*Mail:leixingbang_sx@qiyi.com*@create 2016/1/26 10:07*desc 集合后出发 */import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class CyclicBarrierTest { public static void main(String[] args) { ExecutorService service = Executors.newCachedThreadPool(); final CyclicBarrier cb = new CyclicBarrier(3); for(int i=0;i<3;i++){ Runnable runnable = new Runnable(){ public void run(){ try { Thread.sleep((long)(Math.random()*10000));//cb.getNumberWaiting代表等待的线程数量 System.out.println("线程" + Thread.currentThread().getName() + "即将到达集合地点1,当前已有" + (cb.getNumberWaiting()+1) + "个已经到达," + (cb.getNumberWaiting()==2?"都到齐了,继续走啊":"正在等候")); cb.await();//达到三个线程集合后,才继续往下执行 Thread.sleep((long)(Math.random()*10000)); System.out.println("线程" + Thread.currentThread().getName() + "即将到达集合地点2,当前已有" + (cb.getNumberWaiting()+1) + "个已经到达," + (cb.getNumberWaiting()==2?"都到齐了,继续走啊":"正在等候")); cb.await(); Thread.sleep((long)(Math.random()*10000)); System.out.println("线程" + Thread.currentThread().getName() + "即将到达集合地点3,当前已有" + (cb.getNumberWaiting() + 1) + "个已经到达," + (cb.getNumberWaiting()==2?"都到齐了,继续走啊":"正在等候")); cb.await(); } catch (Exception e) { e.printStackTrace(); } } }; service.execute(runnable); } service.shutdown(); }}
0 0
- 高级并发编程学习之cyclicBarrier
- 并发编程之屏障CyclicBarrier
- 并发编程之屏障CyclicBarrier
- java并发编程之CyclicBarrier
- JAVA并发编程之 CyclicBarrier
- java并发编程之CyclicBarrier
- Java并发编程之CyclicBarrier
- Java并发编程之CyclicBarrier
- 深入学习java并发编程:CountDownLatch、CyclicBarrier
- 并发编程一波流之CyclicBarrier
- Java并发编程之栅栏(CyclicBarrier)详解
- Java并发编程之CyclicBarrier的使用
- java并发编程之CountDownLatch与CyclicBarrier
- java编程思想笔记-并发之CyclicBarrier
- 并发编程工具之二:CyclicBarrier 用法
- 高级并发编程学习之使用Exchanger
- Java并发编程--CyclicBarrier
- 并发编程--CyclicBarrier屏障
- 又找到的一个POJ的分类,好多了这次
- Java 入门 之 静态函数与静态变量
- UI方面总结
- ConcurrentLinkedQueue Demo
- 理解 Android Build 系统
- 高级并发编程学习之cyclicBarrier
- Eclipse中android插件的安装
- 并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法
- 默认库“library”与其他库的使用冲突;请使用 /NODEFAULTLIB:library LNK4098 的解决办法
- CentOS更换yum mirror
- 调用startAcyivityForResult后立即执行onActivityResult
- iOS开发-UITextField(输入框)用法详解
- 2015从BAT看中国互联网
- git 非常用命令笔记