【发布时间】:2011-04-25 14:42:32
【问题描述】:
我做对了吗? EDT 是 GUI 的主线程。要开始长时间操作,最好在新线程中运行它。那么为什么我们需要使用 EventQueue 呢?为什么我们不能像在非 Swing 程序中那样简单地创建和运行新线程?
【问题讨论】:
标签: java multithreading swing thread-safety eventqueue
我做对了吗? EDT 是 GUI 的主线程。要开始长时间操作,最好在新线程中运行它。那么为什么我们需要使用 EventQueue 呢?为什么我们不能像在非 Swing 程序中那样简单地创建和运行新线程?
【问题讨论】:
标签: java multithreading swing thread-safety eventqueue
如果您在后台运行长时间运行的操作,没有任何内容表明您需要使用 EventQueue。此处队列的目的是在您必须更新长时间运行过程已完成的 UI 时使用。
当流程完成时,您会在事件队列上放置某种可运行的通知,以通知 UI 完成。
【讨论】:
不,EDT 本质上是隐式在主线程上运行的。您不会“移动”EDT。相反,如果你想脱离主线程,脱离 EDT,你照你说的做,开始你自己的线程。
看看SwingWorker。这是一种有助于促进这一点的通用机制。
【讨论】: