同步工具CyclicBarrier
2017-12-19 00:52
302 查看
一.CyclicBarrier概述
从英文上面理解就是循环的障碍物表示大家彼此等待,大家集合好后才开始出发,分散活动后又在指定地点集合碰面,这就好比整个公司的人员利用周末时间集体郊游一样,先各自从家出发到公司集合后,再同时出发到公园游玩,在指定地点集合后再同时开始就餐
三个线程干完各自的任务,在不同的时刻到达集合点后,就尅接着忙各自的工作去了,再到达新的集合点,再去忙各自的工作,到达集合点了用CycicBarrier对象的await方法表示
为什么几个人能碰到一起,说白了,就是大家都把手头这一阶段的工作做完了,就可以碰到一起了,譬如,我下楼等方老师,就是等他手头工作做完了,他到达了要集合的状态,就集合了
public class CyclicBarrierTest { public static void main(String[] args) { ExecutorService service = Executors.newCachedThreadPool(); final CyclicBarrier cb = new CyclicBarrier(3);//3个人就满了 for(int i =0;i<3;i++) { Runnable runnable = new Runnable() { @Override public void run() { try { Thread.sleep((long)(Math.random()*10000)); 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 (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (BrokenBarrierException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }; service.execute(runnable); } service.shutdown(); } }
相关文章推荐
- 并发包同步工具CyclicBarrier
- CyclicBarrier&CountDownLatch&Exchanger 同步工具
- java5 CyclicBarrier同步工具
- java5的CyclicBarrier同步工具
- 16_张孝祥_多线程_同步工具CyclicBarrier与CountDownLatch
- CyclicBarrier同步工具应用
- (11)java5的Semaphere、CyclicBarrier同步工具
- 并发工具类(二)同步屏障CyclicBarrier
- Java5的CyclicBarrier同步工具
- java5的CyclicBarrier同步工具(十五)
- 15.Java5的CyclicBarrier同步工具
- 并发编程工具之二:CyclicBarrier 用法
- 同步辅助类CyclicBarrier
- java 并发编程实战第三章同步辅助类CyclicBarrier解析
- JDK5.0 特性线程 同步装置之CountDownLatch 同步装置之CyclicBarrier 线程 BlockingQueue
- 同步屏障CyclicBarrier
- 并发工具类:同步屏障CyclicBarrier
- JAVA线程同步辅助类CyclicBarrier循环屏障
- Java并发编程-同步辅助类之CyclicBarrier
- 倒计数锁存器(CountDown Latch)和 CyclicBarrier(同步屏障)