java - 使用 SwingUtilities.invokeLater() 在线程中加载 GUI 有哪些优点

标签 java multithreading swing

大家好,我看到 Swing GUI 是这样启动的

public class Main {

public static void main(String args[]){
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            new Gui();
        }

    });

}

}

以这种方式启动有什么好处?

最佳答案

除了好处之外,我想说这是必要的,因为大多数 Swing 组件都不是线程安全的。 invokeLater 将在 Swing 事件调度线程内运行任务,避免线程干扰或内存一致性错误。

您可以在Swing Tutorial, Event Dispatch Thread chapter中找到它。 .

关于java - 使用 SwingUtilities.invokeLater() 在线程中加载 GUI 有哪些优点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21320417/

相关文章:

java - 在java线程中正确同步Vector

c# - 尽管 UI 存在于 STAThread 中,为什么 Control.(Begin)Invoke 是必要的?

java - 使用 Truezip 将新文件添加到 zip 存档

java - ActiveMQ:无法在 JMX 中注册传输连接器:java.io.IOException:无法识别传输方案:[stomp]

c++ - shared_ptr 是线程安全的开销是多少?

Java swing 禁用窗口

java - 如何使用按钮按下操作在面板中显示图像

Java:paintComponent() Oval 未出现在 Netbeans 中

java - 如何解决java.lang.StringIndexOutOfBoundsException : String index out of range: -325 while deploying Liferay Ext plugin 6. 1

java - 如何获取已在 Java Servlet 上下文中设置的全局对象