【发布时间】:2021-07-30 00:05:22
【问题描述】:
如果我像这样实例化一个 Executor:
private final Executor executor = Executors.newFixedThreadPool(2);
然后执行如下代码:
executor.execute(() -> {
doSomeThingHere();
});
线程池在代码执行后被销毁会发生什么? Executor 没有任何关闭方法?每次我运行应用程序的过程时,我都会在我的应用程序中体验到线程的建立。这可能不是原因,但我想了解这一点并排除它。目前每次我想在后台运行代码时,我都会以这种方式实例化一个新的执行器。
【问题讨论】:
-
“现在每次我想在后台运行代码时,我都会以这种方式实例化一个新的执行程序”,这很可能是问题所在。只创建一个
-
不要分配给
Executor字段。使用ExecutorService,它确实有一个shutdown方法。 -
@Eugene 好的,谢谢,所以我应该创建一个实例并在我的代码中使用它好的,我认为可能是这种情况。
-
@SotiriosDelimanolis 谢谢我当然可以这样做,并在执行我的任务后调用关机。现在我会这样做,看看它是否对我的问题有帮助,我仍然想知道 Executor 的线程池中的线程是否被杀死以及何时被杀死?
-
在固定的线程池中,没有。当执行器关闭时,它们将被停止。
标签: java android threadpool executor