CountDownLatch :线程计数器 用于线程执行任务,计数 等待线程结束
CountDownLatch 可以用来计数,可以测试任务是否执行结束
也可以用来停止一个线程,也可以用来线程运行结束完后通知事件,彼此工作的线程互相独立不关心。
解释:CountDownLatch.countDown()是用来线程计数器-1的,也就是新增线程运行完之后,都调用此方法将计数器变成0,最后调用await()方法,主线程就会被唤醒,继续执行其它代码
应用场景:启动一个服务时,主线程需要等待多个组件加载完毕,之后再继续执行。
用法:
1-先初始化会运行的线程数n
private static CountDownLatch countDown = new CountDownLatch(n);
2-然后每个线程开启并运行完成之后计数器都减去1,可以在finally里面执行
countDown.countDown();
3-主线程唤醒
end.await();