这个代码会在UI线程中运行吗?

时间:2012-07-22 14:13:35

标签: java swing swingworker

例如,My UI线程执行一个名为A的SwingWorker线程。在A线程的done()函数中,它创建一个SwingWorker线程B.现在,线程B的done()函数中的代码正在运行在UI线程或线程A?

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

1 个答案:

答案 0 :(得分:2)

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