gpt4 book ai didi

java - Executors.newSingleThreadExecutor 服务是否需要使用关闭进行清理?

转载 作者:行者123 更新时间:2023-12-03 12:55:10 26 4
gpt4 key购买 nike

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

我已经读到 ExecutorService 中的 Activity 线程会阻止 JVM 关闭。既然singleThreadExecutor也在里面创建了一个线程池,那么这是否意味着线程是活跃的呢?

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

最佳答案

it internally creates a thread pool of one thread



正确的

in case of failure a new one will be created



它捕获所有 Throwable,因此当您首先遇到错误时它不会失败。

So my concern is do I need to shutdown this executor service, when there are no more tasks in the system?



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

I have read that the active threads inside the ExecutorService prevents the JVM from shutting down.



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

Since singleThreadExecutor also creates a thread pool inside, so does that mean that the thread is active or not?



它在处理某事时会处于 Activity 状态。它是否处于 Activity 状态不会改变 JVM 是否关闭,只改变线程是否为守护进程。

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

这是我之前写的一个例子 NamedThreadFactory

关于java - Executors.newSingleThreadExecutor 服务是否需要使用关闭进行清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35976926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com