gpt4 book ai didi

java - ExecutorService,如何在不阻塞主线程的情况下知道所有线程何时完成?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:44:56 24 4
gpt4 key购买 nike

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

最佳答案

使用 SwingWorker关闭线程池并调用 awaitTermination()。这将防止 UI 阻塞并从您的 SwingWorker 实现上的事件调度线程调用 done(),您可以使用它来触发您需要的任何 UI 更改。

如果您希望跟踪通过 UI 更新运行的线程,您可以使用工作线程在循环中监视它,并使用参数调用 publish(),然后将这些参数传递给您的在 EDT 上实现 process()

关于java - ExecutorService,如何在不阻塞主线程的情况下知道所有线程何时完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9779774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com