什么是SwingUtilities.invokeLater


问题内容

我已经看过数百遍这小段代码了:

public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
          createAndShowGUI();
        }
    });
}

现在我的问题是:怎么invokeLater()办?如果我仅在主线程中创建并显示GUI,将会发生什么样的坏事情?


问题答案:

如果在遵循指南的前提下从EDT更新它,则不会发生任何不良情况。

那是…

如果从事件分配线程(例如,从JButton的ActionListener)调用invokeLater,则doRun.run()仍将延迟,直到处理完所有未决事件。

资源

如果不是这种情况,invokeLater()则是必需的。

它调度Runnable将在EDT(事件分派线程)上执行的。