MST

星途 面试题库

面试题:Java中常用同步器CountDownLatch的使用场景及原理

请描述在Java中CountDownLatch同步器的常见使用场景,并简要说明其实现原理。
41.0万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

常见使用场景

  1. 多线程协作等待:比如在一个应用程序中,主线程需要等待多个子线程完成各自的任务后再进行汇总计算。例如在数据分析场景中,多个子线程分别处理不同部分的数据,主线程等待所有子线程处理完毕后,对数据进行整合和分析。
  2. 模拟并发请求:在性能测试中,希望多个线程同时发起请求来测试系统在高并发下的性能。可以使用CountDownLatch让所有线程在同一时刻开始执行。

实现原理

  1. 构造函数CountDownLatch通过构造函数传入一个初始计数值count,这个计数值表示需要等待的操作数。
  2. await方法:当一个线程调用CountDownLatchawait方法时,该线程会被阻塞,直到count的值变为0。
  3. countDown方法:其他线程执行完任务后,调用countDown方法,该方法会将count的值减1。当count的值减到0时,所有因调用await方法而被阻塞的线程会被释放,继续执行后续的代码。其内部是基于AQS(AbstractQueuedSynchronizer)框架实现的,通过AQS的同步队列来管理等待的线程。