finalize()中的ExecutorService关闭

时间:2018-04-27 12:42:04

标签: java executorservice shutdown finalize

我有一个管理对象缓存的类 通过ScheduledExecutorService每小时清理一次缓存 可以通过类ExecutorService方法关闭finalize()吗?

@Override
protected void finalize() throws Throwable {
    EXECUTOR_SERVICE.shutdownNow();
}

我目前正在使用Java 6。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

没有"呼叫 - 这是最后一次" Java中的方法。 finalize方法实际上是"吃 - 记忆 - 也许 - 不 - 甚至 - 打电话给我" Java中的方法。

ExecutorService有shutdownshutdownNow。 使用这些, 但不是finalize方法。

当您的应用知道它想要快速停止时,请致电shutdown"。 当您的应用知道它想要尽快停止时,请致电shutdownNow,但可能不会立即停止。

没有办法指示ExecutorService现在停止,不要等待#34;

这是Brief ExecutorService Tutorial on Baeldung