我有一个管理对象缓存的类
通过ScheduledExecutorService
每小时清理一次缓存
可以通过类ExecutorService
方法关闭finalize()
吗?
@Override
protected void finalize() throws Throwable {
EXECUTOR_SERVICE.shutdownNow();
}
我目前正在使用Java 6。
答案 0 :(得分:1)
我建议查看WeakReference类,并将其用作终结器。
它仍然依赖于GC的可达性计算,这意味着它可能不会被立即调用,但它消除了僵尸对象和其他一些困扰最终模式的问题。
答案 1 :(得分:1)
没有"呼叫 - 这是最后一次" Java中的方法。
finalize
方法实际上是"吃 - 记忆 - 也许 - 不 - 甚至 - 打电话给我" Java中的方法。
ExecutorService有shutdown
和shutdownNow
。
使用这些,
但不是finalize
方法。
当您的应用知道它想要快速停止时,请致电shutdown
"。
当您的应用知道它想要尽快停止时,请致电shutdownNow
,但可能不会立即停止。
没有办法指示ExecutorService
现在停止,不要等待#34;