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

相关推荐
Aurorar0rua1 天前
CS50 x 2024 Notes C -14
c语言·开发语言·学习方法
new_bie_B1 天前
Android16 Input 事件分发链路
android
小短腿的代码世界1 天前
从.qrc到rcc编译器:Qt资源系统的隐秘运作机制与大型项目性能突围
开发语言·qt
2401_833269301 天前
Java网络编程入门
java·开发语言
金銀銅鐵1 天前
[Java] 如何将 Lambda 表达式对应的类保存到 class 文件中?
java·后端
青瓦梦滋1 天前
C++的IO流与STL的空间配置器
开发语言·c++
五月君_1 天前
Bun v1.3.14 发布,Rust 版即将进 Claude Code 内测,下一版可能就告别 Zig
开发语言·后端·rust
それども1 天前
Gradle 构建疑难杂症 Could not find netty-transport-native-epoll-linux-aarch_64.ja
java·服务器·gradle·maven
正儿八经的少年1 天前
application.yml 系列配置文件作用与区别
java·配置文件
鱼很腾apoc1 天前
【学习篇】第20期 超详解 C++ 多态:从语法规则到底层原理
java·c语言·开发语言·c++·学习·算法·青少年编程