Executors.newSingleThreadExecutor 服务是否需要使用关机进行清理



我对使用 newSingleThreadExecutor 清理执行器服务有一个轻微的困惑。根据其实现,它在内部创建一个线程的线程池,如果失败,将创建一个新线程池。我正在使用 singleThreadExecutor,因为我想按顺序运行在运行时创建的任务。所以我担心的是,当系统中没有更多任务时,我是否需要关闭此执行器服务?

我已经读到执行器服务中的活动线程阻止 JVM 关闭。由于 singleThreadExecutor 也在内部创建了一个线程池,那么这是否意味着线程处于活动状态?

对不起,如果已经有疑问。

它在内部创建一个线程的线程池

正确

如果失败,将创建一个新的

它捕获了所有可抛出的,因此当您首先遇到错误时它不会失败。

所以我担心的是,当系统中没有更多任务时,我是否需要关闭此执行器服务?

您应该关闭,因为您担心资源。 如果你的线程是一个守护进程线程,它不会阻止 JVM 关闭(默认情况下它将是一个非守护进程线程。

我已经读到执行器服务中的活动线程阻止 JVM 关闭。

只有非守护程序线程会阻止 JVM 关闭。

由于 singleThreadExecutor 也在内部创建了一个线程池,那么这是否意味着线程处于活动状态?

当它正在做某事时,它将处于活动状态。它是否处于活动状态不会改变 JVM 是否关闭,只会改变线程是否是守护进程。

您可以通过提供线程工厂使线程成为守护程序线程。 我建议您这样做,即使您所做的只是设置名称,因为这样可以更轻松地调试/分析您的应用程序。

这是我之前写的一个例子 命名线程工厂

相关内容

  • 没有找到相关文章

最新更新