1、案例介绍
在日常开发中经常会遇到需要在线程中开启多个线程去并行执行任务,并且主线程需要等待所有子线程执行完毕后再进行汇总的场景。在CountDownLatch出现之前一般都使用线程的join()方法来实现这一点,但是join()方法不够灵活,不能够满足不同场景的需要。
使用CountDownLatch的代码如下:
public class JoinCountDownLatch {
// 创建一个CountDownLatch实例
private static volatile CountDownLatch countDownLatch = new CountDownLatch(2);
public static void main(String[] args) throws InterruptedException {
Thread threadOne = new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000);
}catch (InterruptedException e) {
e.printStackTrace();
}finally {
countDownLatch.countDown();
}
System.out.println("child threadOne over");
}
});
Thread threadTwo = new Thread(new Runnable()