- 一个好的规则是所有操作(访问/更新/ …)都应在EDT上进行。javadoc中提到了一些例外(某些类的某些方法),但是很难记住它们,以至于坚持“在EDT上做所有事情”的方法比较容易。不会引发异常(幸运的是,JavaFX修复了此缺点)。您可以使用定制
RepaintManager
来检测大多数此类违规:请参阅本文。 - 用户触发的所有内容均在EDT上处理。例如,如果用户单击一个按钮,
actionPerformed
则相应的Action
或ActionListener
将在EDT上被调用。 - 正确
- 首先安排的事情将首先执行。该
invokeLater
调用只是Runnable
在队列末尾添加。稍候再使用invokeLater
第二次,将Runnable
在先前安排的时间之后添加此新内容Runnable
。 - 看一下代码
doneEDT
private void doneEDT() {Runnable doDone = new Runnable() { public void run() { done(); } };if (SwingUtilities.isEventDispatchThread()) { doDone.run();} else { doSubmit.add(doDone);}}



