CountDownLatch是轻量级完成信号协调器,仅解决“等齐”问题:主线程等待所有子任务调用countDown()后被唤醒;需配合线程安全容器、超时控制、异常兜底和结果聚合才能构成完整编排。
CountDownLatch 在多任务异步执行中,不是任务编排器,而是完成信号协调器——它不调度、不传值、不重试、不合并结果,只解决一个核心问题:“等齐”:让主线程可靠地等待一组子任务全部抵达完成状态。
当多个子任务并行启动(比如加载配置、连接数据库、拉取远程数据),主线程不能靠 sleep() 硬等,也不能靠轮询 getCount() 浪费 CPU。CountDownLatch 提供了一种轻量、原子、阻塞可中断的等待机制:只要所有子任务都调用了 countDown(),主线程就能被精准唤醒。这避免了竞态和误判,是编排“等待点”的基础设施。
单独用 CountDownLatch 无法完成真实业务编排,它只是拼图中的一块:
计数器初始值 = 实际执行的子任务数,缺一不可:
立即学习“Java免费学习笔记(深入)”;
它天然适用于启动期、初始化期这类单次、不可重置的协调需求:
不适合循环复用或动态增减任务数的场景(此时应考虑 CyclicBarrier 或 CompletableFuture 组合)。