|
|
CountDownLatch(1) 是 Java 并发工具类中的一个同步辅助类,让我为您详细解释:
基本概念
类名: CountDownLatch
构造参数: 这是一个计数器,而不是时间. 1 表示计数器的初始值
包路径: java.util.concurrent.CountDownLatch
工作原理
计数器机制
初始化时设置计数器为 1
调用 countDown() 方法会使计数器减 1
调用 await() 方法会阻塞线程直到计数器归零
典型使用场景
- val latch = CountDownLatch(1) // 创建计数器为1的latch
-
- // 在异步操作完成后调用, 也就是在一个支线线程中,关键操作完成之后马上调用
- latch.countDown() // 计数器减1,变为0
-
- // 在主线程中等待
- latch.await() // 当计数器为0时,不再阻塞
-
复制代码 在测试中的应用
解决异步测试问题: 等待后台线程完成操作后再进行断言
确保测试可靠性: 避免测试在异步操作完成前结束
控制执行顺序: 确保某些操作按预期顺序执行
常用方法
countDown(): 递减计数器
await(): 等待计数器归零
await(timeout, unit): 带超时的等待
虽然当前代码中没有直接使用 CountDownLatch(1),但它通常在测试异步操作时非常有用。
|
|