可能重复: SwingUtilities.invokeLater是做什么的? SwingUtilities.invokeLater
我见过这段代码几百次了:
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}现在我的问题是:invokeLater()是做什么的?如果我只是在主线程中创建并显示我的GUI,那么会发生什么样的坏事呢?
发布于 2012-08-22 16:15:11
发布于 2012-08-22 16:17:01
1. Event Dispatcher Thread是GUI线程。
2. --如果您谈论的是main() method...then ,它在Java 中生活的时间不长。main()方法在调度图形用户界面后退出,现在它的EDT处理图形用户界面.。
3. invokeLater意味着当事件放置在事件调度程序队列中时,该调用将立即返回,而run()方法将异步运行.
发布于 2012-08-22 16:14:00
Swing不是线程安全的,对Swing对象的所有更改都必须在事件调度线程中执行。如果您尝试在外部运行代码,您将得到未指定的行为,这可能会在某个时候变得奇怪。
相反,Eclipse使用的SWT/JFace GUI框架在每个公共入口点上断言正确的线程。
https://stackoverflow.com/questions/12077245
复制相似问题