事件调度线程是处理所有GUI事件并管理Swing GUI的线程。如果您的程序中有任何GUI,它将在Swing代码中的某处启动。之所以在幕后完成,是因为简单-
您不必费心自己启动和管理额外的线程。
关于必须使用
invokeLater()它来更新GUI的事实是由于并发问题。只能从一个线程修改GUI,因为Swing不是线程安全的(值得注意的是,
大多数
工具包都不是线程安全的,有一篇不错的文章提供了一些想法)。这就是为什么您必须提交所有GUI更新才能在EDT上运行的原因。
您可以在Swing中阅读有关并发性的更多信息,以及在Sun关于Swing中并发性的教程中了解事件分配线程。另外,如果您希望了解如何以其他方式完成此操作,则可以查看SWT工具箱。在SWT中,您必须自己管理EDT。



