java - 为什么在 exec.shutdown() 之前使用 exec.isTerminated() 和 java 中的 ExecutorService?
问题描述
我正在研究线程并遇到以下代码并有一些担忧
ExecutorService exec = Executors.newFixedThreadPool(2);
exec.execute(left);
exec.executed(right);
if (!exec.isTerminated()) {
exec.shutdown();
exec.awaitTermination(5L, TimeUnit.SECONDS);
}
int result = left.getResult() + right.getResult();
如果所有任务都终止,则 if 条件将为 False 并且线程池不会终止,因为在 if 条件之外没有关闭命令。
以下是正确的:
那么如果外面也应该关闭吗?
为什么甚至有 if 条件 shutdown() 等待所有预先提交的任务完成,我们甚至可以摆脱 awaitTermination()?
解决方案
推荐阅读
- android - 如何使用 Firebase 将毕加索图像添加到 ArrayList
- xslt - 创建 html 表时避免重复
- nativescript - 当应用程序在 android 平台的前台时,Firebase 推送通知不显示
- php - Symfony:在 FormType 表单中为 EntityType 使用不同的字段
- selenium - 在命令提示符下运行 selenium 测试套件时有等待/超时
- javascript - 在 react 和 JavaScript 中获取正确格式的数据
- javascript - 在 MS Edge 中检测覆盖模式
- julia - 在 Julia/DifferentialEquations 中使用 VectorContinuousCallback 时输出解中事件的索引
- .net - Zip 文件的文件类型在复制到 AWS S3 时发生变化
- android - 使用 adb 和活动管理器在 Android 上捕获具有指定名称的 JPEG 图像