个人感觉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();
}
}