我有一个多线程实现,我创建一个 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(使用前将#替换为@)