发布于2026-07-10 阅读(0)
扫一扫,手机访问
CountDownLatch 的核心玩法其实特别直接:它内部维护了一个递减计数器,主线程调用 await() 就会被阻塞住,直到所有的子任务都调用了 countDown() 把计数器减到 0,主线程才能醒过来继续往下走。关键是,它根本不关心你到底用的是哪个线程对象,也不需要主线程跟子线程之间有什么直接的引用关系——这就让它在线程池、异步回调这些松耦合的场景里非常吃香。

CountDownLatch 的阻塞可不是靠轮询或者忙等待那种笨办法,它背后依赖的是 AQS(AbstractQueuedSynchronizer)的共享锁机制来实现的:
主线程要做的事很简单:把所有子任务启动完之后,调一下 await() 就行。但这里有几个坑得留心:
每个子任务必须且只能调用一次 countDown(),否则主线程的判断就会出问题:
CountDownLatch 的阻塞逻辑跟 Thread.join() 完全是两码事:
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8