0

我刚刚读到我们可以使用关闭钩子作为一个例子,说明clean up在应用程序退出之前提供功能是理想的。

我想知道的是,例如,如果您有一个像 Web 服务一样 24/7 运行的应用程序,那么理想的时间是什么时候终止和清理诸如 Executor Services 之类的东西。如果应用程序不应该关闭,那么我们真的没有方便的清理期或确实没有干净关闭的能力吗?

谢谢

4

1 回答 1

1

这个问题太宽泛了,但如果我理解正确,那么Oracle 文档会解释它:

程序中不再引用且没有剩余线程的池将自动关闭。如果您想确保即使用户忘记调用 shutdown() 也能回收未引用的池,那么您必须通过设置适当的保持活动时间、使用零核心线程的下限和/或来安排未使用的线程最终死亡设置 allowCoreThreadTimeOut(boolean)。

因此,例如由创建的 ExecutorServiceExecutors.newSingleThreadExecutor()FinalizableDelegatedExecutorService. 现在ExecutorService 该类具有finalize()调用shutdown()包装的 ExecutorService 对象上的方法的方法。

于 2014-08-25T17:12:11.513 回答