use*_*550 1 java swing multithreading invokelater
给出以下代码:
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
ClientGUI gui = new ClientGUI();
gui.start();
}
});
}
Run Code Online (Sandbox Code Playgroud)
一切正常,我得到一个很好的GUI窗口.好.现在,让我们在gui.start()之后添加一个无限循环:
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
ClientGUI gui = new ClientGUI();
gui.start();
while (true) {
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
并且输出是一个空白窗口,不响应窗口退出.有人能解释一下这里到底有什么好事吗?
有人可以解释一下这里真正的幸福吗?
当然.您将事件调度线程保持在无限循环中,因此它永远不会对诸如"关闭窗口"之类的事件做出反应.不要那样做.
您应该尽可能多地保持事件调度线程可用 - 不要在其上执行任何长时间运行的任务,包括IO操作,例如从文件或网络读取.
有关更多详细信息,请参阅"Swing中的并发"教程.
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |