2012-07-22 69 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()方法找出答案。

相關問題