循环栅栏 可以在多线程协作时控制线程同步执行
比如 A 1s执行完毕 B5s执行完毕
那么A执行完后需要等待B执行完 然后才能进行下一轮
public static void main(String[] args) {//循环栅栏CyclicBarrier cyclicBarrier = new CyclicBarrier(3);//开启三个线程for (int i = 0; i < 3; i++) {new MyThread(cyclicBarrier).start();}}static class MyThread extends Thread {CyclicBarrier cyclicBarrier;public MyThread(CyclicBarrier cyclicBarrier) {this.cyclicBarrier = cyclicBarrier;}@Overridepublic void run() {while (true) {try {System.out.println(Thread.currentThread().getName() + "=执行业务方法");Thread.sleep(new Random().nextInt(10000));cyclicBarrier.await();//相当于一个栅栏//只有所有的线程都执行到这里时 才能开始下一步System.out.println(Thread.currentThread().getName() + "开始下一轮执行");} catch (Exception e) {e.printStackTrace();}}}}
