CountDownLatch的使用和原理解析 —— 多个线程怎么判断所有线程都执行完了

CountDownLatch的使用和原理解析

参考来源

1、CountDownLatch 概念

CountDownLatch可以使一个获多个线程等待其他线程各自执行完毕后再执行。
CountDownLatch 定义了一个计数器,和一个阻塞队列, 当计数器的值递减为0之前,阻塞队列里面的线程处于挂起状态,当计数器递减到0时会唤醒阻塞队列所有线程,这里的计数器是一个标志,可以表示一个任务一个线程,也可以表示一个倒计时器,CountDownLatch可以解决那些一个或者多个线程在执行之前必须依赖于某些必要的前提业务先执行的场景。

2、CountDownLatch 常用方法说明

CountDownLatch(int count); //构造方法,创建一个值为count 的计数器。
​
await();//阻塞当前线程,将当前线程加入阻塞队列。
​
await(long timeout, TimeUnit unit);//在timeout的时间之内阻塞当前线程,时间一过则当前线程可以执行,
​
countDown();//对计数器进行递减1操作,当计数器递减至0时,当前线程会去唤醒阻塞队列里的所有线程。

3、使用说明

  • 先new CountDownLatch(10),并设定线程数
  • 每个任务执行完调用countDownLatch.countDown()方法减一
  • 等待的线程 调用countDownLatch.await()方法,countDownLatch 中为0时,等待线程开始执行
posted @ 2022-05-10 14:08  来一杯coffee  阅读(175)  评论(0)    收藏  举报