ExecutorService,如何知道所有线程何时完成而不阻塞主线程?

2024-02-28

我有一个多线程实现,我创建一个 ExecutorService 并提交要执行的任务,我想知道所有线程何时提交完成而不阻塞主线程和 UI。我试过了ExecutorService.awaitTermination()但它会阻塞主线程和 UI。我已经搜索了很多,但似乎找不到一种优雅的方法来做到这一点。我目前正在考虑创建另一个线程来计算已完成的线程数量,并在它们全部完成时启动一个事件,但这不是一个好的方法,我想要一个更好的解决方案!


Use a SwingWorker http://docs.oracle.com/javase/7/docs/api/javax/swing/SwingWorker.html关闭线程池并调用awaitTermination()。这将防止 UI 阻塞并调用done()来自 SwingWorker 实现上的事件调度线程,您可以使用它来触发您需要的任何 UI 更改。

如果您希望通过 UI 更新来跟踪运行的线程,您可以使用工作线程来循环监视并调用publish()然后将参数传递给您的实现process()在美国东部时间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ExecutorService,如何知道所有线程何时完成而不阻塞主线程? 的相关文章

随机推荐

  • Xcode 未反映来自 React-Native 的最新应用程序代码

    EDIT 好吧 事实证明这不是 AppStore 的问题 我从 Xcode 发布模式运行了应用程序 并且在模拟器上运行了相同的旧版本 我不知道为什么 但 Xcode 没有运行最新的 jsbundle 现在我发现this https stac
  • 在 Dart 中获取与正则表达式匹配的所有子字符串的最佳方法

    我想获取与字符串中的正则表达式匹配的子字符串列表 做这个的最好方式是什么 dart core 中的 RegExp 对象有Iterable
  • 用java下载包含资源(如图像)的完整网页

    有没有办法下载 html 网页及其所有资源 例如 图像 CSS 我知道如何使用 html 解析器通过遍历所有相关标签来做到这一点 但是没有easy way That is最简单的方法 困难的方法是编写自己的网络库 html 解析器等
  • SwiftUI 中 ObservedObject 和 StateObject 有什么区别

    如果我有一个ObservableObject在 SwiftUI 中我可以将其称为 ObservedObject class ViewModel ObservableObject Published var someText Hello Wo
  • 如何轻松分析 Oracle 包的执行是否存在性能问题?

    我在 11g R2 DB 中有一个 pl sql 包 它有相当多的相关过程和函数 我执行一个顶级函数 它做了很多事情 当前每秒处理 对于 Oracle 的 PL SQL 分层分析器 DBMS HPROF 来说 这似乎是一项不错的工作 作为一
  • 优化 iPhone OpenGL ES 填充率

    我的 iPhone 上有一个 Open GL ES 游戏 我的帧率很糟糕 20fps 在 iPhone 3G 上使用 Xcode OpenGL ES 性能工具 它显示 渲染器利用率 95 至 99 瓷砖利用率 27 我正在绘制很多非常大的图
  • 随机迭代所有排列

    我导入了一个大数组 我想随机迭代所有行排列 该代码被设计为在某个数组产生所需的解决方案时中断 到目前为止的尝试涉及正常的迭代扰动过程 import numpy as np import itertools file np loadtxt m
  • 单击按钮后程序停止响应

    我正在尝试制作我的第一个程序 一个端口扫描器 显示远程服务器上的所有开放端口 我已经让它在 CLI 中工作 感谢互联网 但决定制作一个 GUI Qt5 它 我希望textbox2在输入IP地址并单击 扫描 后输出所有打开的端口 并且显然程序
  • User.Identity.IsAuthenticated 与 WebSecurity.IsAuthenticated

    在 MVC4 应用程序中 在控制器逻辑中 我想检查用户是否已登录 我应该使用 User Identity IsAuthenticated Or WebSecurity IsAuthenticated 据我所知WebSecurity只是一个包
  • 显示 kivy 滑块值的变化 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想知道是否可以将 kivy 微调器值显示为移动标签 以便用户确切地知道滑块的当前值是什么 Thanks 您只需将侦听器绑定到值更改事件
  • Flowtype 函数可能会抛出错误

    有什么方法可以明确定义函数可以抛出错误 显然任何函数都可以抛出错误 但我想明确定义一个函数被设计为抛出并且可能根本不返回值 async function falseThrow promise Promise
  • 如何根据 NSString 类型键测试属性是否存在和类型?

    在我寻求更新 iOS 项目中的核心数据模型时 我在服务器上查询 JSON 对象 这些对象在某种程度上与我的模型的托管实体相对应 我追求的最终结果是从 JSON 输出获得可靠的更新解决方案 对于这个问题中的示例 我将命名核心数据管理对象exi
  • 将 Mongo 中的某些字段从字符串转换为数组

    我有一个文档集合 其中 标签 字段从空格分隔的标签列表切换为单个标签数组 我想将以前的空格分隔字段更新为像新传入数据一样的数组 我也遇到了 type 选择器的问题 因为它将类型操作应用于单个数组元素 即字符串 因此按类型过滤只会返回所有内容
  • SQL 排除包含按分组最大值过滤的几乎重复值的行

    我有一张这样的桌子 ID User ID Skill Skill Level Skill ID 1 1 Project Manager 3 1 2 4 Teacher 6 2 3 2 Teacher 5 2 4 3 Administrato
  • 具有不同主键的 Hibernate 继承

    我正在尝试使用 TABLE PER CLASS 策略创建继承 但我想为每个表使用不同的主键 这可能吗 我有一个类 Register 它有数百万个实例 其中一些实例是 特殊的 并且它们的列和额外列有不同的规则 MappedSuperclass
  • VB6.dll获取调用应用程序路径

    我正在从 VB6 制作一个 dll 我需要知道将使用该 dll 的应用程序的路径 但我不知道如何执行此操作直接来自 dll 有人知道该怎么做吗 先感谢您 嗯 这似乎可以作为 DLL 工作 Option Explicit Private Co
  • &&评估问题

    据我所知 逻辑上 工作原理如下 var test false var foo test 42 这段代码 将分配42 to foo only如果第一个条件被评估为true 所以在这个例子中 foo将保持其当前值 我想知道为什么这个片段根本不起
  • “死内核”Anaconda-Jupyter 紧贴 C++ Windows

    我新安装了 Anaconda v 4 3 1 并使用 conda 命令在 Jupyter 上安装 C 内核的 cling 我用了conda install c conda forge cling 0 3 post 我使用的是 Windows
  • 将全天活动添加到 Google 日历的链接

    所以我看了看添加到 Google 日历的链接 https stackoverflow com questions 10488831 link to add to google calendar 但我想对全天活动做同样的事情 我试过做date
  • ExecutorService,如何知道所有线程何时完成而不阻塞主线程?

    我有一个多线程实现 我创建一个 ExecutorService 并提交要执行的任务 我想知道所有线程何时提交完成而不阻塞主线程和 UI 我试过了ExecutorService awaitTermination 但它会阻塞主线程和 UI 我已