每天一个小知识之CountDownLatch

CountDownLatch介绍

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

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

CountDownLatch机制

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值