gpt4 book ai didi

java - 在 Java 中替换 finalize()

转载 作者:行者123 更新时间:2023-12-04 01:48:31 28 4
gpt4 key购买 nike

Object.finalize()在 Java 9 中已弃用,我想我明白原因,但我无法看到如何替换它。

我有一个名为 Configuration 的实用程序类,它本质上有一个实例,该实例拥有应用程序中的所有内容,并在应用程序的整个过程中持续存在。它提供的服务之一是日志记录:在第一次请求记录消息时,会创建一个记录器(出于各种遗留原因,它是我自己的记录器而不是标准记录器),并在 Configuration 对象的字段中保存一个引用,并且在应用程序终止时,无论是正常还是异常,我想释放记录器持有的任何资源(这是一个黑匣子,因为我的库的用户可以提供他们自己的实现)。

目前,这是通过 Configuration.finalize() 实现的。调用 logger.close() 的方法.

我应该怎么做?

最佳答案

Java 9 引入了 Cleaner和 Cleanable 实用程序类,它们负责将幻像引用连接到队列和排空该队列的清理线程。

虽然这可以让您分离出将在拥有对象死亡后执行事后清理的见证人,但关于 GC 触发的资源管理的所有警告仍然适用,即仍然最好依赖 AutoClosable。和 try-with-resources 块来管理资源的生命周期,而不是在垃圾收集器上。

关于java - 在 Java 中替换 finalize(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47762986/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com