本文介绍了为什么在 main 方法中使用 SwingUtilities.invokeLater?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
经过多年的 Java 编程,我总是习惯于像这样创建我的 main()
方法:
After years of Java programming I always used to create my main()
methods like this :
public static void main(String[] args)
{
runProgram();
}
但最近我从网上研究了一些代码,有时看到这个而不是上面通常使用的 main()
:
But recently I studied some codes from the Web and saw this sometimes instead of the usual main()
use above :
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
runProgram();
}
});
}
我只是想知道:
- 为什么要使用这种方式而不是通常的
main()
方式?当我尝试时,我看不出有什么不同. - 这两种方式有什么区别?
- Why to use this instead of the usual
main()
way ? I can't see any difference when I give it a try. - What is the difference between these two ways ?
感谢您阅读我和您的回答.
Thanks for reading me and your answers.
推荐答案
文档解释了原因.来自 初始线程
The docs explain why. From Initial Threads
为什么初始线程不简单地创建 GUI 本身?因为几乎所有创建或与 Swing 组件交互的代码都必须在事件调度线程上运行.
来自事件调度线程
某些 Swing 组件方法在 API 规范中被标记为线程安全";这些可以从任何线程安全地调用.所有其他 Swing 组件方法都必须从事件调度线程中调用.忽略此规则的程序在大多数情况下可能会正常运行,但会出现难以重现的不可预测的错误.
这篇关于为什么在 main 方法中使用 SwingUtilities.invokeLater?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!