CountDownLatch 通过 AQS 实现计数器驱动的线程阻塞与唤醒,主线程调用 await() 阻塞,子线程调用 countDown() 递减计数,归零后唤醒所有等待线程;它不依赖线程引用,支持线程池和异步场景,不可重用。
CountDownLatch 通过一个内部递减计数器,让主线程在调用 await() 时进入阻塞状态,直到所有子任务调用 countDown() 将计数器减至 0,主线程才被唤醒继续执行。它不依赖线程对象本身,也不要求主线程与子线程有直接引用关系,适用于线程池、异步回调等松耦合场景。
CountDownLatch 的阻塞不是靠轮询或忙等待,而是基于 AQS(AbstractQueuedSynchronizer)的共享锁机制实现:
主线程只需在启动全部子任务后调用 await(),但必须注意超时与中断处理:
每个子任务必须且仅调用一次 countDown(),否则会影响主线程判断:
立即学习“Java免费学习笔记(深入)”;
CountDownLatch 的阻塞逻辑与 Thread.join() 完全不同:
DeepSeek多模态怎么样及保姆级配置教程(codex、claude)实用指南
WSL2+Docker+Ollama本地部署大模型思路和实践指南(Qwen1.8b)实用指南
DeepSeek Harness热门插件盘点:10个实用插件,覆盖多Agent、上下文和多模态实用指南
grep文本搜索与正则表达式完整代码示例实用指南
AI漫剧伪装直男1‑24集无雾版夸克网盘资源免费分享
AI漫剧玉僧入尘1-68集无雾无删版夸克网盘资源免费分享