JUC練習代碼-CyclicBarrier的簡單用法

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我已經上車啦

有興趣的可以查看下源碼,看看爲什麼是導遊語句先打印,線程上車語句後打印的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章