Java 开发 - CountDownLatch 不需要手动关闭

CountDownLatch 不需要手动关闭

  1. CountDownLatch 使用完毕后会占用一定的内存资源,但不需要手动释放,Java 的垃圾回收(GC)会自动回收

  2. CountDownLatch 是一个普通的 Java 对象,内部维护了一个继承自 AbstractQueuedSynchronizer(AQS)的同步器,只要该对象可达(即还有引用指向它),它就会占用堆内存

java 复制代码
public class CountDownLatch {
    private static final class Sync extends AbstractQueuedSynchronizer {}
}
  1. 当没有任何强引用指向 CountDownLatch 实例时,GC 会在合适的时机回收它,释放其占用的内存

  2. 仍有线程在 await() 上等待(例如,忘记调用 countDown() 足够多次),这些线程会一直阻塞,并且 CountDownLatch 对象会一直被这些等待线程间接引用,导致无法被回收。因此,务必确保所有 countDown() 都被调用,或者处理超时 / 中断逻辑

  3. CountDownLatch 不涉及文件句柄、网络连接、数据库连接等有限系统资源,所以不会像 InputStream 或 Socket 那样需要显式关闭

相关推荐
小研说技术3 小时前
结构化输出让Agent返回可预测的格式数据
java·人工智能
众少成多积小致巨3 小时前
GNU Make 核心指南
android·c++
凛_Lin~~3 小时前
安卓进程保活方案记录(双重fork+文件锁+手搓parcel)
android·安卓
两年半的个人练习生^_^3 小时前
PinYin4j汉字转拼音使用及踩坑
java
谭欣辰3 小时前
详细讲解 C++ 状压 DP
开发语言·c++·动态规划
weixin_568996063 小时前
c++如何实现日志文件的异步落盘功能_基于无锁队列方案【附代码】
jvm·数据库·python
chaofan9803 小时前
GPT-5.5 全压力测试:为什么 API 聚合调度是解决“首字延迟”的技术关键?
开发语言·人工智能·python·gpt·自动化·api
海天鹰3 小时前
安卓相机:获取最近拍摄的照片缩略图做相册按钮图标
android
William_wL_3 小时前
【C++】stack和queue的使用和实现(附加deque的简单介绍)
开发语言·c++