1

我是java新手,有一个研究生角色的面试问题,我不明白,所以你能告诉我哪个线程和它的目的吗?

4

2 回答 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 回答