循环栅栏 可以在多线程协作时控制线程同步执行
    比如 A 1s执行完毕 B5s执行完毕
    那么A执行完后需要等待B执行完 然后才能进行下一轮

    1. public static void main(String[] args) {
    2. //循环栅栏
    3. CyclicBarrier cyclicBarrier = new CyclicBarrier(3);
    4. //开启三个线程
    5. for (int i = 0; i < 3; i++) {
    6. new MyThread(cyclicBarrier).start();
    7. }
    8. }
    9. static class MyThread extends Thread {
    10. CyclicBarrier cyclicBarrier;
    11. public MyThread(CyclicBarrier cyclicBarrier) {
    12. this.cyclicBarrier = cyclicBarrier;
    13. }
    14. @Override
    15. public void run() {
    16. while (true) {
    17. try {
    18. System.out.println(Thread.currentThread().getName() + "=执行业务方法");
    19. Thread.sleep(new Random().nextInt(10000));
    20. cyclicBarrier.await();
    21. //相当于一个栅栏
    22. //只有所有的线程都执行到这里时 才能开始下一步
    23. System.out.println(Thread.currentThread().getName() + "开始下一轮执行");
    24. } catch (Exception e) {
    25. e.printStackTrace();
    26. }
    27. }
    28. }
    29. }