【问题标题】:why do i need EventQueue to start a new thread in java EDT? (JAVA)为什么我需要 EventQueue 在 java EDT 中启动一个新线程? (JAVA)
【发布时间】:2011-04-25 14:42:32
【问题描述】:

我做对了吗? EDT 是 GUI 的主线程。要开始长时间操作,最好在新线程中运行它。那么为什么我们需要使用 EventQueue 呢?为什么我们不能像在非 Swing 程序中那样简单地创建和运行新线程?

【问题讨论】:

    标签: java multithreading swing thread-safety eventqueue


    【解决方案1】:

    如果您在后台运行长时间运行的操作,没有任何内容表明您需要使用 EventQueue。此处队列的目的是在您必须更新长时间运行过程已完成的 UI 时使用。

    当流程完成时,您会在事件队列上放置某种可运行的通知,以通知 UI 完成。

    【讨论】:

      【解决方案2】:

      不,EDT 本质上是隐式在主线程上运行的。您不会“移动”EDT。相反,如果你想脱离主线程,脱离 EDT,你照你说的做,开始你自己的线程。

      看看SwingWorker。这是一种有助于促进这一点的通用机制。

      【讨论】:

      • 另见Initial Threads。初始线程不会启动 EDT,但它应该安排在 EDT 上创建 GUI。
      猜你喜欢
      • 2011-08-27
      • 2018-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多