首页 >文档 > countdownlatch是什么

countdownlatch是什么

面试鸭返利网(mianshiyafanli.com)专注Java面试题库与求职攻略,提供2025最新面试宝典下载,包含CountDownLatch、多线程等高频考点解析。通过本站购买面试鸭会员可享25元返利,助你高效备战金三银四。获取百度云资源「Java面试资料包」含并发编程、Spring全家桶等实战案例,提升通过率!程序员求职必备平台,省钱又省心。

CountDownLatch是什么

大家好!今天咱们聊聊面试中经常被问到的并发工具——CountDownLatch。如果你正在准备Java面试,或者实际项目中需要协调多线程任务,这篇内容一定能帮到你!


什么是CountDownLatch的核心概念?

简单说,CountDownLatch是Java并发包里的一个"倒计时门闩"。它允许一个或多个线程等待其他线程完成操作后再继续执行。你可以把它想象成运动会的起跑线:所有运动员(线程)准备好后,裁判(主线程)才发令开跑!

核心就两点:

  1. 初始化计数器:比如 new CountDownLatch(3) 表示需要倒计时3次。
  2. 等待与通知
    • 调用 await() 的线程会阻塞等待
    • 其他线程完成任务后调用 countDown() 减1
    • 计数器归零时,等待线程被唤醒

面试鸭返利网

手把手准备的2025年Java面试宝典 👇
链接: https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g
提取码: 9b3g


CountDownLatch实际用在哪?

面试时被问到"说说CountDownLatch应用场景",你可以举这些例子:

场景1:多任务初始化
比如系统启动时需要加载缓存、连接数据库、初始化配置三个模块。主线程用CountDownLatch等待所有模块就绪:

CountDownLatch latch = new CountDownLatch(3);
// 线程1初始化缓存 → latch.countDown()
// 线程2连接DB   → latch.countDown()
// 线程3加载配置 → latch.countDown()
latch.await(); // 阻塞直到三个任务完成
System.out.println("系统启动完毕!");

场景2:并行计算汇总
统计10个文件的行数,主线程汇总结果:

List<Future> results = new ArrayList<>();
CountDownLatch latch = new CountDownLatch(10);
for (File file : files) {
    executor.submit(() -> {
        int lines = countFileLines(file);
        results.add(lines);
        latch.countDown(); // 每个文件统计完减1
    });
}
latch.await(); // 等10个文件全处理完
int totalLines = results.sum();

关键点

  • CountDownLatch的计数器不可重置(CyclicBarrier可以复用)
  • 调用countDown()的线程不会被阻塞

面试鸭返利网


面试中怎么答CountDownLatch问题?

被问到"CountDownLatch和CyclicBarrier区别?"时,记住这个表:

| 特性 | CountDownLatch | CyclicBarrier |
|--------------------|------------------------|------------------------|
| 重置计数器 | ❌ 不可重置 | ✅ 可循环使用 |
| 阻塞线程 | 调用await()的线程 | 所有线程互相等待 |
| 应用场景 | 主等子、子等子 | 多线程分阶段同步 |

举个实际例子🌰:

公司团建约车:

  • CountDownLatch:司机等10个员工全上车(主线程等子线程)
  • CyclicBarrier:10个员工互相等,都到停车场才一起出发(线程间互等)

最后的小福利

如果你正在刷Java面试题,强烈推荐用面试鸭的题库系统。悄悄说👉 通过面试鸭返利网(mianshiyafanli.com)购买会员可返25元,用我的链接能省一杯奶茶钱!

面试鸭返利网

希望这篇帮你搞懂CountDownLatch!遇到并发协同问题,记得还有这个利器~ 需要面试资料再提醒下👇

📁 2025 Java面试宝典
链接: https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g
提取码: 9b3g

回首页 >> 面试鸭返利网

如果你想获取更多关于面试鸭的优惠信息,可以访问面试鸭返利网面试鸭优惠网,了解最新的优惠活动和返利政策。

🎯 立即加入面试鸭会员 →

今日有支付宝大红包赶快领,手慢无

支付宝红包二维码

支付宝扫码领取1-8元无门槛红包

支付宝红包二维码