ConCurrent包下工具类-CyclicBarrier
2017-10-01 16:47
183 查看
需要一组线程同时达到某个条件后一起啊开始执行。
类似的场景:一个线程代表一个跑步运动员,当所有的运动员都准备好了之后才一起出发。只要有一个没有准备好,大家都继续等待。
结果
类似的场景:一个线程代表一个跑步运动员,当所有的运动员都准备好了之后才一起出发。只要有一个没有准备好,大家都继续等待。
package com.lihuan.concurrentUtil; import java.util.Random; import java.util.concurrent.CyclicBarrier; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class CyclicBarrierTest { static class MyRunnable implements Runnable{ private CyclicBarrier barrier; private String name; public MyRunnable(CyclicBarrier barrier, String name) { this.barrier = barrier; this.name = name; } @Override public void run() { try { Thread.sleep(1000*(new Random().nextInt(5))); System.out.println(name+"准备OK"); //每个线程执行await()开始等待 barrier.await(); } catch (Exception e) { e.printStackTrace(); } System.out.println(name+"GO!!!"); } } public static void main(String[] args) { //创建CyclicBarrier 设置屏障数为3 CyclicBarrier barrier = new CyclicBarrier(3); /** * 创建固定数量的线程池 * 添加三个线程 * 每个线程执行await()开始等待 * 当三个线程都调用await()时开始,一起开始执行 */ ExecutorService pool = Executors.newFixedThreadPool(3); pool.execute(new Thread(new MyRunnable(barrier, "zhangsan"))); pool.execute(new Thread(new MyRunnable(barrier, "lisi"))); pool.execute(new Thread(new MyRunnable(barrier, "wangwu"))); pool.shutdown(); } }
结果
相关文章推荐
- 【死磕Java并发】—- J.U.C之并发工具类:CyclicBarrier
- J.U.C之并发工具类:CyclicBarrier
- 互联网架构(4):并发编程--Concurrent.util工具类
- 【死磕Java并发】—- J.U.C之并发工具类:CyclicBarrier
- java.util.concurrent包下同步辅助工具类CountDownLatch
- 【死磕Java并发】—- J.U.C之并发工具类:CyclicBarrier
- 同步工具类 java.util.concurrent.CountDownLatch
- 【死磕Java并发】—- J.U.C之并发工具类:CyclicBarrier
- 同步工具类三:计数信号量(java.util.concurrent.Semaphore)
- 【死磕Java并发】—- J.U.C之并发工具类:CyclicBarrier
- CyclicBarrier 辅助工具类
- java.util.concurrent.CountDownLatch控制线程执行工具类源码解析
- Java并发工具类CountDownLatch和CyclicBarrier
- 使用util.concurrent并发包下的工具类,实现实时通知对方线程
- 【死磕Java并发】—- J.U.C之并发工具类:CyclicBarrier
- j.u.c系列(09)---之并发工具类:CyclicBarrier
- java.util.concurrent.CyclicBarrier同步屏障工具类源码解析
- java.util.concurrent包(6)――CyclicBarrier使用
- 同步工具类一:闭锁(java.util.concurrent.CountDownLatch)
- 【死磕Java并发】—- J.U.C之并发工具类:CyclicBarrier