【发布时间】:2017-08-03 16:45:57
【问题描述】:
据我所知,Swing GUI 应用程序中有 3 个线程:
-
主应用线程,它执行
main()方法 - 工具包线程,接收系统事件
- 事件调度线程,专门用于 GUI 内容的绘制和事件处理
通常,main 方法只是调用SwingUtilities#invokeLater(Runnable) 以初始化窗口等,因此在 EDT 上进行 GUI 初始化......顺便说一句,据我所知(再次),一切触及 GUI 的必须在 EDT 上执行...
问题:主线程用于/可用于什么?它在调用invokeLater() 后就死了吗?它会消耗资源吗?我可以(并且它是一个好习惯)使用它来执行...我不知道...网络的东西?
【问题讨论】:
-
我相信如果没有什么能阻止它返回,主线程就会死掉,然后只有 EDT 线程存活。如果您主要有其他事情要做,那就在那儿做,但不要过多考虑可以放在那里的东西。如果您的 GUI 上有任何用户操作需要不直接显示长任务,只需从那里创建一个新线程。
标签: java multithreading swing