微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

解决方法

使用 SwingWorker关闭线程池并调用awaitTermination().这将阻止UI阻止并从SwingWorker实现上的Event dispatch Thread调用done(),您可以使用它来触发所需的任何UI更改.

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

原文地址:https://www.jb51.cc/java/126969.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐