文档

Java™教程
隐藏目录
事件调度线程
教程路径: 使用Swing创建GUI
课程: Swing中的并发

事件派发线程

Swing事件处理代码运行在一个特殊的线程上,称为事件派发线程。大多数调用Swing方法的代码也在这个线程上运行。这是必要的,因为大多数Swing对象方法都不是“线程安全”的:从多个线程调用它们会导致线程干扰内存一致性错误。API规范中标记为“线程安全”的一些Swing组件方法可以从任何线程安全地调用。其他所有Swing组件方法必须从事件派发线程中调用。忽略此规则的程序可能大部分时间正常工作,但可能会出现难以复现的不可预测的错误。

有用的是,将在事件派发线程上运行的代码视为一系列短任务。大多数任务是事件处理方法的调用,例如ActionListener.actionPerformed。其他任务可以由应用程序代码使用invokeLaterinvokeAndWait进行调度。事件派发线程上的任务必须快速完成;如果没有完成,未处理的事件将积压,用户界面将变得不响应。

如果需要确定代码是否在事件派发线程上运行,请调用javax.swing.SwingUtilities.isEventDispatchThread


上一页: 初始线程
下一页: 工作线程和 SwingWorker