我有一个工作线程,应在继续执行之前等待EDT更新GUI。我已经使用publish方法来告诉EDT进行更改。我怎样才能让 worker 等待这种变化发生?

最佳答案

如果启动GUI更改的是您的工作线程,那么有一种现成的机制可以等待进行这些更改:

SwingUtilities.invokeAndWait()

应该很好地符合要求。

另一种选择是使用SwingUtilities.invokeLater()来给EDT运行一些代码,一旦EDT变得空闲(即当它开始运行此任务时),它将唤醒您的线程。这将涉及立即触发invokeLater()wait(),并希望在执行wait()之前不会发生从EDI唤醒的情况。不过,就时序而言,这并不是万无一失的。

09-16 04:23