當多個任務,都須要到達特定的步驟以後,全部任務才都繼續下去。那麼咱們須要的就是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