例如,My UI线程执行一个名为A的SwingWorker线程。在A线程的done()函数中,它创建一个SwingWorker线程B.现在,线程B的done()函数中的代码正在运行在UI线程或线程A?
有意义的是,代码应该在线程A上运行,但如果我不在线程A中调用get()函数,则线程A不会等待线程B,线程A可能会完成其任务。如果线程B现在执行done()函数中的代码,则线程A不存在。那么在这种情况下如何处理代码?
答案 0 :(得分:2)
根据SwingWorker API文档,SwingWorker#done()
在Swing事件派发线程(EDT)上运行。对于上面提到的两种done()
方法都是如此。您知道使用SwingUtilities.isEventDispatchThread()
方法可以轻松找到答案。