我最近开始学习和探索Java编程的基础知识。
已经编程了一段时间,我只做了后端工作或工作,因此最接近我已经得到用户界面是命令控制台(我知道的尴尬)。
我使用Swing,就我可以收集这意味着通过扩展我也使用AWT。
我的问题是基于这段代码:
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new frame.setVisible(true);
}
} );
我一直在研究这一段时间,因为我想完全理解这个奇怪的代码,并已经碰到了术语“事件调度线程”多次。纠正我,如果我错了,但我明白了;它与使用多线程以及Java Swing如何解释这些线程有关。我收集以上的代码是用来确保所有的线程是’安全的’,在它创建窗口之前,因此invokeLater?
我读过:
“You can only call methods that operate on the frame from the Event-Dispatching Thread”
并且只有在某些情况下,您才能调用从主方法对帧进行操作的方法。
有人可以请澄清一下事件分发线程是什么?
它如何与多线程的执行相关,以及这些线程如何不安全地从主方法中调用?为什么我们需要这个invokeLater?
我们不能只是将窗口创建为任何其他对象吗?
我在研究中打了一个路障,因为我没有抓住这些关系和想法。
旁注是,我喜欢把我的知识基于深入的理解,因为我相信这导致最好的整体结果,因此最好的方案。如果我深入了解事情的工作原理,那么你可以有效地使用提示和调整,而不仅仅是将它们反馈到代码,所以请不要害怕给我一些额外的深入解释和扩大我的知识。
谢谢。