gpt4 book ai didi

java - 主应用程序线程会发生什么?

转载 作者:搜寻专家 更新时间:2023-11-01 02:37:14 25 4
gpt4 key购买 nike

据我所知,Swing GUI 应用程序中有 3 个线程:

  • 主应用程序线程,它执行main() 方法
  • 接收系统事件的工具包线程
  • 事件调度线程,专门用于 GUI 内容的绘制和事件处理

通常,main 方法只是调用 SwingUtilities#invokeLater(Runnable) 来初始化窗口等,因此 GUI 初始化是在 EDT 上进行的...顺便说一句,据我所知(再次),接触 GUI 的所有内容都必须在 EDT 上执行...

问题:主线程是用来做什么的?它是否在调用 invokeLater() 之后就死掉了?会不会消耗资源?我可以(并且这是一个好习惯)使用它来执行...我不知道...网络内容吗?

最佳答案

Swing 程序员实际上处理3 种线程:

  1. Initial 线程(执行初始应用程序代码的线程,我们主要在这里)
  2. EDT(如您所述)
  3. Worker线程(处理后台任务)

初始线程创建 Runnable 来运行 swings 任务并在 EDT 中安排它。之后,程序主要由 GUI 驱动,应用程序代码保留下来,可以继续执行其他任务(您注意到的网络人员)并消耗尽可能多的资源因为它需要。任何 Swing 组件方法都必须由 EDT(但其中一些)调用,因为它们的 swing 方法不是“线程安全”。所以, SwingUtilities#invokeLater(Runnable) 只需将 runnable 放入 EDT 任务列表中并等待轮到它运行。

doc here很有帮助。

关于java - 主应用程序线程会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45490207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com