Java线程 - Swing事件调度线程中的永久循环

时间:2010-12-08 22:16:34

标签: java multithreading events swing dispatch

我有SwingWorker执行:

public Void doInBackground() throws InterruptedException
{
     while (true)
     {
            while(_update)
            {

            }
     }
}

如果_update设置为false,让EDT永久循环是否安全?或者我应该让它每秒睡觉吗?

- 编辑

看起来我没有使用SwingWorker,因为它应该被使用。谢谢大家。我会坚持创建SwingWorkers,因为我需要它们。

2 个答案:

答案 0 :(得分:4)

让Event Dispatch Thread进入循环是不安全的。

需要事件派发线程来提供用户与应用程序的交互。如果您希望事件每隔几秒钟就会消失一次,您应该在每次完成时将其或其他副本放回事件队列中。

答案 1 :(得分:1)

为什么不启动另一个线程并让它根据需要运行/休眠,让它使用SwingUtilities.InvokeLater或者根据需要做任何UI工作?

没有任何其他上下文,您可能会误用SwingWorker?