0

例如,我的 UI 线程执行了一个 SwingWorker 线程,称为 A。在 A 线程的 done() 函数中,它创建了一个 SwingWorker 线程 B。现在,线程 B 的 done() 函数中的代码在 UI 线程上运行还是线程 A?

有道理,代码应该在线程 A 上运行,但是如果我不在线程 A 中调用 get() 函数,线程 A 将不会等待线程 B,线程 A 可能会完成它的任务。如果线程 B 现在执行 done() 函数中的代码,则线程 A 不存在。那么在这种情况下如何处理代码呢?

4

1 回答 1

2

根据SwingWorker API文档,SwingWorker#done()在 Swing 事件调度线程 (EDT) 上运行。done()对于您上面提到的两种方法都是如此。您知道使用该方法可以轻松找出答案SwingUtilities.isEventDispatchThread()

于 2012-07-22T14:15:07.990 回答