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

前端之家收集整理的这篇文章主要介绍了java – ExecutorService,如何知道所有线程何时完成而不阻塞主线程?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个多线程实现,我创建一个ExecutorService并提交要执行的任务,我想知道所有线程被提交的时间已经完成而没有阻塞主线程和UI.我已经尝试过ExecutorService.awaitTermination()但它阻止了主线程和UI.我搜索了很多,但我似乎无法找到一种优雅的方式来做到这一点.我正在考虑创建另一个线程来计算完成的线程数量,并在它们全部完成时启动一个事件,但这不是一个好方法,我想要一个更好的解决方案!

解决方法

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

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

原文链接:https://www.f2er.com/java/126969.html

猜你在找的Java相关文章