千家信息网

为什么要加EventQueue.invokeLater呢

发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,为什么要加EventQueue.invokeLater呢,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。比如下面的程序:import
千家信息网最后更新 2025年11月09日为什么要加EventQueue.invokeLater呢

为什么要加EventQueue.invokeLater呢,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

比如下面的程序:

import java.awt.*;

import javax.swing.*;

public class Test

{

public static void main(String[] args)

{

EventQueue.invokeLater(new Runnable()

{

public void run()

{

JFrame frame = new JFrame();

frame.setSize(400, 300);

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

});

}

}



原因:
Java's GUI is strictly single-threaded.
All GUI related things in java should always go through a single thread. The thread is our legendary "AWT-EventQueue-0" . Hence all GUI related actions should necessarily go through the AWT Event thread. If not so you may end up in a deadlock. For small programs, this might never happen. But for a huge java application if you try frame.setVisible(true) kind of thing in main thread, you will soon find yourself searching a new job. What invokeLater() does is to post your Runnable in the AWT thread's event queue. So the code in your run method will be executed in the AWT-Eventqueue thread.
大意是说,java的GUI都是的单线程,应该使用事件调度线程去执行,如果没意思使用事件调度线程的话,可能造成死锁。但是在小的程序中,这种现象(死锁)不会发生的;大的应用程序中才会出现这种现象!

关于为什么要加EventQueue.invokeLater呢问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

程序 线程 问题 事件 更多 现象 死锁 帮助 解答 调度 易行 没意思 简单易行 内容 原因 大意 小伙 小伙伴 应用程序 方法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 北风网网络安全工程师 珠海线上点餐软件开发 武汉大学国家网络安全学院专硕 数据库联合主键优势 兴庆区oa软件开发好不好 数据库的发展经过的阶段 国家税务总局网络安全周 廊坊市中小学生网络安全教育 信息网络安全测评报告 浙江网络安全东塔特训营 易之悦网络技术公司联系号码 安徽弘通网络技术 鸿彩易博海南网络技术 我的世界服务器地址怎么连接 护航网络安全注意事项 软件开发和技术转让的区别 违网络安全法 公民责任 跨数据库同步 玩游戏只有一个服务器延迟 数据库er图合并 做软件开发写程序 nfs文件服务器开通哪些端口 安徽常用软件开发收购价格 县融媒体中心网络安全工作总结 计算机网络技术及应用是什么 住酒店登录网络安全吗 近十年网络安全事件 网络安全的危害性日益增大 金融网络安全监管 软件开发基本设计和功能设计
0