java - Executor FixedThreadPool 执行后会发生什么,因为 executor 没有关闭方法?
问题描述
如果我像这样实例化一个 Executor:
private final Executor executor = Executors.newFixedThreadPool(2);
然后执行如下代码:
executor.execute(() -> {
doSomeThingHere();
});
代码执行后线程池会被破坏吗?Executor 没有任何关闭方法?每次我运行应用程序的过程时,我都会在我的应用程序中体验到线程的建立。这可能不是原因,但我想了解这一点并排除它。目前,每次我想在后台运行代码时,我都会以这种方式实例化一个新的执行器。
解决方案
使用ExecutorService
而不是Executor
因为newFixedThreadPool()
返回一个ExecutorService
并且有一个shutdown
方法。
如果执行器是使用ThreadFactory
创建守护线程的 a 创建的(请参阅setDaemon),并且没有其他非守护线程在运行,例如主线程或 EDT,则虚拟机将被终止(停止所有线程)
推荐阅读
- python - Pandas 按列分组查找每组中的计数百分比
- flutter - 如何在颤动的pageView中使用AnimatedCrossFade多个小部件?
- python - ExcelWriter ValueError:将 df 保存到 Excel 时,Excel 不支持带时区的日期时间
- momentjs - foreach hours in momentJs
- javascript - 在 React 中获取用户名窗口
- unity3d - 角色正在传送
- pivot - TradingView 枢轴反转策略
- azure-active-directory - 如何使用 MSAL.NET 处理多租户守护程序服务应用程序的 AppTokenCache
- node.js - puppeteer 不能在里面点击
- excel - 使用 Excel VBA 关闭变量工作簿