我有一个控制器类,在其操作过程中,它使用它维护的执行器来执行任务。如果我只是让 gc 在控制器超出范围时清理它,那么 JVM 似乎并没有死。我假设这是因为默认执行程序没有超时,或者在很长一段时间后超时。
鉴于在控制器仍可访问时永远不应该关闭执行器,并且在控制器被垃圾收集后不会使用执行器,使用终结器是否是安全/可接受的使用:
@Override
public void finalize() {
executor.shutdown();
}
我之所以这么问,是因为每次关于终结器的讨论似乎都归结为“除非非常具体的情况,否则不要使用,我不会详细说明”。