为什么我需要EventQueue在java EDT中启动一个新线程? (JAVA)

时间:2011-04-25 14:42:32

标签: java multithreading swing thread-safety eventqueue

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

不,EDT基本上是在主线程上运行的。你没有“移动”EDT。相反,如果你想在主线程上工作,而不是在EDT之外,你可以按照你的说法开始自己的线程。

看看SwingWorker。这是帮助实现这一目标的常用机制。