java5的CyclicBarrier同步工具
2018-01-18 00:00
357 查看
一、概述
1、表示大家彼此等待,大家集合好后才开始出发,分散活动后又在指定地点集合碰面,这就好比整个公司的人员利用周末时间集体郊游一样,先各自从家出发到公司集合后,再同时出发到公园游玩,在指定地点集合后再同时开始就餐,…2、Cyclic:循环的,有周期性的 Barrier:障碍物,屏障
二、代码描述
1、CyclicBarrierTest
package com.lh.threadtest.t12; import java.util.concurrent.CyclicBarrier; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /**** * * @ClassName: CyclicBarrierTest * @Description: java5的CyclicBarrier同步工具 * @author Liu * @date 2018年1月18日 下午4:35:08 * */ 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)); System.out.println("线程" + Thread.currentThread().getName() + "即将到达集合地点1,当前已有" + cb.getNumberWaiting() + "个已经到达,正在等候"); cb.await(); Thread.sleep((long) (Math.random() * 10000)); System.out.println("线程" + Thread.currentThread().getName() + "即将到达集合地点2,当前已有" + cb.getNumberWaiting() + "个已经到达,正在等候"); cb.await(); Thread.sleep((long) (Math.random() * 10000)); System.out.println("线程" + Thread.currentThread().getName() + "即将到达集合地点3,当前已有" + cb.getNumberWaiting() + "个已经到达,正在等候"); cb.await(); } catch (Exception e) { e.printStackTrace(); } } }; service.execute(runnable); } service.shutdown(); } }
相关文章推荐
- (11)java5的Semaphere、CyclicBarrier同步工具
- java5的CyclicBarrier同步工具(十五)
- java5 CyclicBarrier同步工具
- Java5的CyclicBarrier同步工具
- 并发包同步工具CyclicBarrier
- CyclicBarrier&CountDownLatch&Exchanger 同步工具
- 15.Java5的CyclicBarrier同步工具
- CyclicBarrier同步工具应用
- 并发工具类(二)同步屏障CyclicBarrier
- 同步工具CyclicBarrier
- 16_张孝祥_多线程_同步工具CyclicBarrier与CountDownLatch
- Java5新增的同步工具
- 同步工具类 -- CyclicBarrier
- Java多线程同步工具之CyclicBarrier
- 同步屏障CyclicBarrier
- 并发包下常见的同步工具类详解(CountDownLatch,CyclicBarrier,Semaphore)
- Java多线程-并发工具类(一)同步屏障CyclicBarrier
- java5的CountDownLatch同步工具(十六)
- 同步工具类:CountDownLatch、CyclicBarrier和Semaphore
- Java并发之CyclicBarrier 可重用同步工具类