2012-07-22 71 views
0

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

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

回答

2

根据SwingWorker API文档,SwingWorker#done()在Swing事件分派线程(EDT)上运行。对于上面提到的两个done()方法都是如此。你知道有一个简单的方法可以通过使用SwingUtilities.isEventDispatchThread()方法找出答案。

相关问题