当我启动我的 GUI 界面时,如果我不使用 invokeLater 会发生什么?
- 这是否意味着所有其余的 GUI 绘画/更新/等。会在主线程中吗?
- 调用
repaint
外部的 ainvokeLater
会使所有后续调用都落入主线程吗?
基本上是这样的:
void main()
{
JFrame jmf();
setVisible(jmf);
}
------------- VS -------------
void main()
{
SwingUtilities.invokeLater(new Runnable(){
run(){
JFrame jmf();
setVisible(jmf);
}
}
});
注意:在小 GUI 的情况下,如果我不放invokeLater
它似乎可以正常工作。事实上,尽管main
执行了最后一行,但应用程序并没有终止。
我已经阅读了很多关于为什么我们应该使用它的文章,这些文章与 Swing 不是线程安全的(它是单线程的等等)有关,但我真的没有读过不调用的后果invokeLater
(部分是因为我的线程知识有限)