JUC练习代码-CyclicBarrier的简单用法

    技术2022-07-10  122

    public class CyclicBarrierTest { public static void main(String[] args) { CyclicBarrier cyclicBarrier=new CyclicBarrier(7,()->{ System.out.println("导游:大家都到齐啦,准备上车"); }); for (int i = 0; i <7; i++) { new Thread(()->{ System.out.println(Thread.currentThread().getName()+"已经到了"); try { cyclicBarrier.await(); System.out.println(Thread.currentThread().getName()+"我已经上车啦"); } catch (InterruptedException e) { e.printStackTrace(); } catch (BrokenBarrierException e) { e.printStackTrace(); } }).start(); } } }

    打印结果:

    Thread-0已经到了 Thread-1已经到了 Thread-3已经到了 Thread-4已经到了 Thread-5已经到了 Thread-2已经到了 Thread-6已经到了 导游:大家都到齐啦,准备上车 Thread-6我已经上车啦 Thread-0我已经上车啦 Thread-1我已经上车啦 Thread-3我已经上车啦 Thread-4我已经上车啦 Thread-5我已经上车啦 Thread-2我已经上车啦

    有兴趣的可以查看下源码,看看为什么是导游语句先打印,线程上车语句后打印的。

    Processed: 0.011, SQL: 9