个人感觉countdownlatch功能么有CyclicBarrier强大,demo如下:
package com.jerry.concurrency; import java.util.Random; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class TestCountdownlatch { public static void main(String[] args) throws Exception{ final int count = 10; final CountDownLatch latch = new CountDownLatch(count); ExecutorService exec = Executors.newCachedThreadPool(); exec.submit(new Runnable() { @Override public void run() { try { latch.await(); System.out.println("全部任务都完成了"); } catch (InterruptedException e) { e.printStackTrace(); } } }); for(int i=0;i<count;i++){ exec.submit(new Runnable() { @Override public void run() { try { int second = new Random().nextInt(2000); Thread.sleep(second); System.out.println(Thread.currentThread().getName() + " 线程完成完成,耗时:" + second); latch.countDown(); } catch (InterruptedException e) { e.printStackTrace(); } } }); } exec.shutdown(); } }