等待摆动以完成组件的设置

时间:2016-06-15 14:51:44

标签: java swing thread-safety

在eventDispatchThread(EDT)上我们有:

Jxyz xyz = new Jxyz();
....
addListener(...);
....
boolean done = true;

即使没有用户交互,也可以在完成后将某些事件触发设置为true。有没有办法阻止所有这些“启动事件”被清除?

修改

关键是使用SwingUtilities.invokeAndWait()(或非阻塞版本的SwingUtilities.invokeLater())。 Swing可以排队作业而不是立即运行它们。我们所有的代码都在EDT上运行但是,它的行为好像我们将工作分配给其他线程。这就是为什么我们需要使用invokeAndWait()来确保完成这些“其他线程”。

0 个答案:

没有答案