【发布时间】:2020-05-04 18:22:57
【问题描述】:
我的问题很简单。我有一个具有静态 ThreadPoolExecutor 对象的类。因此,该 threadpoolexecutor 对象由该类的所有实例共享。如果我要关闭整个应用程序,共享类对象将被垃圾收集。我希望 threadpoolexecutor 能够通过调用 shutdown 和之后调用 awaitTermination 来完成其挂起的工作。这应该在类对象本身的finalize() 方法中完成。我的问题是:我如何覆盖类对象本身的finalize() 方法?这甚至可能吗?
谢谢
【问题讨论】:
-
即使你这样做了,你也不能保证 GC 会运行。我不建议在那里关闭。
-
"我如何重写类对象本身的 finalize() 方法?这甚至可能吗?" - 不。不,不是。即使是这样,
Object::finalizeis deprecated since Java 9:“终结机制本身就有问题。终结会导致性能问题、死锁和挂起”。只是不要这样做。 -
值得注意的是,
Class在其ClassLoader也符合收集条件之前不符合收集条件。 -
好的,那么还有其他方法可以实现吗?
-
垃圾回收不会中断正在运行的作业或导致它们无法完成。您要解决什么实际问题?
标签: java class java-threads finalize