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 那样需要显式关闭

相关推荐
Flittly11 分钟前
【AgentScope Java新手村系列】(16)从RAG到多路检索
java·spring boot·spring
小兔崽子去哪了17 分钟前
Java 生成二维码解决方案
java·后端
石山岭41 分钟前
自己动手写了一个 Android 虚拟定位 App:GPSSimulate 技术实
android·前端
杉氧3 小时前
副作用 (Side Effects) 全攻略:如何像大师一样掌控 Composable 的生命周期?
android·架构·android jetpack
人活一口气5 小时前
从JVM调优到MCP协议:Java全栈技术体系深度总结与企业级架构实践
java·spring boot
NE_STOP7 小时前
Vibe Coding -- 完整项目案例实操
java
唐青枫7 小时前
别再把 inline 当性能开关:Kotlin 内联、noinline、crossinline 与 reified 实战详解
kotlin
荣码7 小时前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
SimonKing7 小时前
Google第三方授权登录
java·后端·程序员
明月光8187 小时前
从一行 @Builder 说起:重新拾起 Java 的 Lombok、注解与 Builder 模式
java