我是java新手,有一个研究生角色的面试问题,我不明白,所以你能告诉我哪个线程和它的目的吗?
问问题
435 次
2 回答
3
Swing UI 工具包是单线程的(从某种意义上说,从任何其他线程调用任何 Swing 库都是不安全的)。所有 UI 事件,包括渲染和调度它们都是由EDT thread
.
所以点击桌面上的一个按钮。操作系统向接收事件的 EDT 发出通知,然后触发为按钮单击注册的回调函数。此外,从代码中,当您执行某些操作时(例如:重新绘制屏幕或绘制图像)。将EDT
更改交付给操作系统并在屏幕上呈现。因此是双向交互。
因为如前所述 Swing UI 工具包是单线程的。因此,建议仅使用 System.invokeLater 从 EDT 调用任何 Swing 库。更多信息在这里。
于 2013-08-07T16:19:37.147 回答
3
您正在寻找Event Dispatch Thread。
了解它非常重要。了解您的代码最终将在哪个线程上运行至关重要——长时间运行的任务不应在EDT 上运行。相反,在它们自己的线程上分派这些任务,然后在操作结束时运行回调以使用SwingUtilities
.
于 2013-08-07T16:20:23.517 回答