引言
在多线程编程中,你是否遇到过这样的场景?
-
主线程需要等待所有子线程初始化完成后再执行
-
并行任务拆分后需汇总结果
-
压测时模拟高并发请求的瞬时触发
CountDownLatch 是Java并发包中解决这类问题的利器,但很多人仅停留在基础用法,对其底层原理和进阶技巧知之甚少。本文将结合源码与实战案例,带你彻底掌握这一核心工具!
一、CountDownLatch核心原理
1.1 核心设计思想
-
计数器机制:初始化时指定计数值(count),线程调用
countDown()减少计数,await()阻塞直到计数归零。 -
一次性使用:计数归零后无法重置,与
CyclicBarrier的循环使用形成对比。
1.2 典型应用场景
| 场景 | 作用描述 |
|---|---|
| 多线程初始化等待 | 主线程等待所有子线程初始化完成 |
| 并行任务结果汇总 | 多个子任务并行执行,主线程等待所有任务完成 |
| 高并发测试 | 模拟多线程同时触发请求(如JMeter中的Synchronizing Timer) |
二、基础使用与实战案例
2.1 等待多个线程完成
import java.util.concurrent.CountDownLatch;
public class InitializationDemo {
public static void main(String[] args) throws InterruptedException {
int threadCount = 3;
CountDownLatch latch = new CountDownLatch(threadCount);
for (int i = 0; i < threadCount; i++) {
new Thread(() -> {

最低0.47元/天 解锁文章
1197

被折叠的 条评论
为什么被折叠?



