2

我有一个SwingWorker实现:

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

            }
     }
}

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

- 编辑

看起来我没有使用应该使用的 SwingWorker。谢谢大家。我会坚持根据需要创建 SwingWorkers。

4

2 回答 2

3

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

需要事件调度线程来提供用户与应用程序的交互。如果您希望某个事件每隔几秒触发一次,则应在每次完成时将它或它的另一个副本放回事件队列中。

于 2010-12-08T22:32:55.207 回答
0

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

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

于 2010-12-08T22:28:53.393 回答