执行后,执行程序 FixedThreadPool 会发生什么情况,因为执行程序没有关闭方法?



如果我像这样实例化一个执行器:

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

然后执行一些代码,如下所示:

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

线程池会发生什么情况,它会在代码执行后被销毁吗?执行器没有任何关闭方法?每次运行应用程序的过程时,我都会在应用程序中遇到线程的积累。这可能不是原因,但我想了解这一点并排除它。目前,每当我想在后台运行代码时,我都会以这种方式实例化一个新的执行器。

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


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

相关内容

  • 没有找到相关文章

最新更新