首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >finalize()中的ExecutorService关机

finalize()中的ExecutorService关机
EN

Stack Overflow用户
提问于 2018-04-27 12:42:04
回答 2查看 876关注 0票数 2

我有一个管理对象缓存的类。

缓存每小时通过ScheduledExecutorService清理一次。

可以通过类ExecutorService方法关闭finalize()吗?

代码语言:javascript
复制
@Override
protected void finalize() throws Throwable {
    EXECUTOR_SERVICE.shutdownNow();
}

我目前正在运行Java 6。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-27 18:25:20

Java中没有“调用-这个-最后”方法。finalize方法实际上是一种在Java中“吃-内存-也许-不打电话-我”的方法。

ExecutorService有shutdownshutdownNow。使用这些,但不能在finalize方法中使用。

当你的应用程序知道它“想要尽快停止”时,就打电话给shutdown。当你的应用程序知道它“想要尽快停止,但可能不是立即停止时,就打电话给shutdownNow。”

没有办法指示ExecutorService“现在停止,不要等待”。

这是一个关于白龙的ExecutorService教程

票数 1
EN

Stack Overflow用户

发布于 2018-04-27 18:13:42

我建议查看WeakReference类,并将其用作终结器。

它仍然依赖于GC的可达性计算,这意味着它可能不会立即被调用,但是它消除了僵尸对象的可能性以及困扰finalize模式的一些其他问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50062657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档