每天一个小知识之CountDownLatch

CountDownLatch介绍

CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如主任务分发给3个子任务去执行,需要等待3个子任务执行完成之后才能继续执行主任务的场景,就可以用到CountDownLatch.

CountDownLatch是在java1.5被引入的,跟它一起被引入的并发工具类还有CyclicBarrier、Semaphore、ConcurrentHashMapBlockingQueue,它们都存在于java.util.concurrent包下.

CountDownLatch机制

CountDownLatch内部是有一个计数器,计数器的初始化值大于等于需要执行的线程数,当这个计数器的线程们完成任务之后,才会触发等待的线程进行下一步操作。每个线程执行的时候需要调用countDown方法,已将计数器减一,当计数器的值为0时,即代表所有线程已经完成任务,然后在闭锁上等待的线程才可以恢复执行任务。

注:这是一个一次性操作 - 计数无法重置。 如果你需要一个重置的版本计数,考虑使用CyclicBarrier。注:CountDownLatch是一个一次性操作,计数无法重置。 如果需要一个重置的版本计数,考虑使用CyclicBarrier。

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页