package com.allen.concurrent.no9; import java.util.Random; import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; public class TestCyclicBarrier { public static void main(String[] args) { // CyclicBarrier cyclicBarrier = new CyclicBarrier(5); CyclicBarrier cyclicBarrier = new CyclicBarrier(5, new Runnable() { @Override public void run() { System.out.println("该阶段结束!"); } }); for(int i=1; i < 6; i++){ new MyThread2("线程-" + i,cyclicBarrier).start(); } } } class MyThread2 extends Thread { private final CyclicBarrier cyclicBarrier; private final Random random = new Random(); public MyThread2(String name, CyclicBarrier cyclicBarrier) { super(name); this.cyclicBarrier = cyclicBarrier; } @Override public void run() { try { Thread.sleep(random.nextInt(2000)); System.out.println(Thread.currentThread().getName() + " - 已经到 达公司"); cyclicBarrier.await(); Thread.sleep(random.nextInt(2000)); System.out.println(Thread.currentThread().getName() + " - 已经笔 试结束"); cyclicBarrier.await(); Thread.sleep(random.nextInt(2000)); System.out.println(Thread.currentThread().getName() + " - 已经面 试结束"); } catch (InterruptedException e) { e.printStackTrace(); } catch (BrokenBarrierException e) { e.printStackTrace(); } } }
运行结果: