Discuz! BBS

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 285|回复: 0

val latch = CountDownLatch(1)

[复制链接]

465

主题

640

帖子

3734

积分

管理员

Rank: 9Rank: 9Rank: 9

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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2026-2-4 10:51 , Processed in 0.013784 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表