java线程同步之CountDownLatch

CountDownLatch是Java并发包中的一个辅助类,允许一个或多个线程等待其他线程完成操作。初始化时指定计数值N,调用await方法的线程将等待直至CountDownLatch对象的countDown方法被调用N次。本文详细解释了CountDownLatch的工作原理及其核心方法await和countDown的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、类说明
jdk的concurrent包中的CountDownLatch类是一个线程同步的辅助类,它使得线程可以一直等待在其它线程中执行的操作,直到此操作结束。CountDownLatch在初始化的时候指定一个大小值N,调用CountDownLatch的await方法的线程会陷入等待之中,直到这个CountDownLatch对象的countDown方法被调用N次为止,无论是在一个线程中调用N次,还是在N个线程中被调用一次。只有这个对应的CountDownLatch对象的countDown方法总被调用次数为N次之后,这个等待的线程才能继续往下执行。

其原理也容易理解,初始化的时候指定要等待的计数的次数,每调用一次countDown就对这个计数减一,直到计数被减到0,等待的线程就可以继续运行了。

2、await
CountDownLatch的await方法会使得当前线程进入等待状态,直到最新的一次计数被减到0为止。如果当前的计数已经是0了,那么这个方法会马上返回。这个函数有个代参的重载函数,可以设置一个最长的等待时长。在等待时长内,如果计数器被减到0,这个函数会返回true,或者达到等待时长,这个函数会返回false。(被中断情况下抛异常)

3、countDown
使计数减一,初始化的计数不能重新设定,只能通过countDown来对计数减一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值