current包下CyclicBarrier的使用

當多個任務,都須要到達特定的步驟以後,全部任務才都繼續下去。那麼咱們須要的就是CayclicBarrier。java

demo:線程

public static void main(String[] args) {
    final CyclicBarrier cyclicBarrier = new CyclicBarrier(5);
    for (int i = 0; i < 5; i++) {
        final int sleepTime = i * 1000;
        new Thread(new Runnable() {
            public void run() {
                System.out.println(Thread.currentThread().getName() + "    開始讀取數據....");
                try {
                    Thread.currentThread().sleep(sleepTime * 2);
                    cyclicBarrier.await();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } catch (BrokenBarrierException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName() + "  數據讀取完成......");
            }
        }).start();
    }
}

上面的demo起了5個線程,只有等到全部線程都執行到cyclicBarrier.await().的地方的時候,你們纔會繼續執行下面的代碼。code

相關文章
相關標籤/搜索