首页 > 解决方案 > Executor FixedThreadPool 执行后会发生什么,因为 executor 没有关闭方法?

问题描述

如果我像这样实例化一个 Executor:

private final Executor executor = Executors.newFixedThreadPool(2);

然后执行如下代码:

executor.execute(() -> {
                    doSomeThingHere();
                });

代码执行后线程池会被破坏吗?Executor 没有任何关闭方法?每次我运行应用程序的过程时,我都会在我的应用程序中体验到线程的建立。这可能不是原因,但我想了解这一点并排除它。目前,每次我想在后台运行代码时,我都会以这种方式实例化一个新的执行器。

标签: javaandroidthreadpoolexecutor

解决方案


使用ExecutorService而不是Executor因为newFixedThreadPool()返回一个ExecutorService并且有一个shutdown方法。


如果执行器是使用ThreadFactory创建守护线程的 a 创建的(请参阅setDaemon),并且没有其他非守护线程在运行,例如主线程或 EDT,则虚拟机将被终止(停止所有线程)


推荐阅读