在Java的生命周期中,用于控制需要在EDT上执行什么操作的规则(我看到的是“
EDT”比“事件队列”更常用)。而且每次“规则”更改时,Sun建议在EDT上进行越来越多的“ GUI相关”工作。
人们为什么在EDT上运行Java GUI?
因为官方指南建议这样做。
因为这样做将有助于避免许多与GUI相关的线程错误。
请注意,这不是很众所周知,因为Swing本身有一些错误,所以EDT实际上 确实 偶尔 会
崩溃。每个不平凡的Swing应用程序都使用具有错误的Swing API,因此EDT有时会失效。
您永远不会看到它,这也不是引起关注的原因,因为当EDT死后,它会自动重启。
基本上,在EDT上进行所有与GUI相关的工作,并在EDT之外进行所有冗长的操作(以免阻塞EDT)。
*您要求 *EDIT编辑
一个示例,以了解如何在EDT外部进行冗长的操作。有几种方法可以做到这一点。在最简单的情况下,您只需从EDT创建并启动新线程。这是一个示例:当用户单击按钮时,将调用侦听器回调,我们知道这将在EDT上发生…
JButton jb = ... jb.addActionListener( new ActionListener() { public void actionPerformed( final ActionEvent e ) { final Thread t = new Thread( new Runnable() {public void run() { // this shall get executed, after start() has been called, outside the EDT }});t.start(); } } );对于更复杂的示例,您想阅读 SwingWorker 等。



