2016-02-13 40 views
1

我剛開始使用SwingWorker作爲迭代算法。在創建從SwingWorker擴展的類的對象之後,我在JFrame擴展的主類的構造函數中執行了execute()函數。我在應用程序運行期間使用doInBackground()和process()函數。我不需要在整個應用程序中停止執行。當用戶關閉我的JFrame應用程序時,是否需要爲SwingWorker執行任何停止或清理任務?我的意思是,直接關閉使用SwingWorker的JFrame應用程序是否安全?如何安全地使用SwingWorker?

感謝

+2

'SwingWorker'使用它自己的'ExecutorService',它由它自己的'ThreadFactory'支持,它產生守護進程'Thread's,這意味着一旦所有非守護進程線程完成,JVM就能夠退出。它安全嗎?這將歸結爲你的SwingWorker實際上在做什麼,但是如果你沒有開放任何資源或者其他進程依賴於SwingWorker的結果來完成他們的工作(並且關閉資源,等等),應該是 – MadProgrammer

+1

謝謝!這是我正在尋找的答案。你爲什麼不把它寫成答案而不是評論? – adba

回答

3

SwingWorker使用它自己的ExecutorService,它通過它自己的ThreadFactory產生守護Thread S,這意味着JVM將能夠退出一旦所有的非守護線程的已完成的支持。

安全嗎?這會降低到你實際做的SwingWorker,但是如果你沒有持有任何資源或者其他進程依賴於SwingWorker的結果來完成他們的工作(並且關閉資源等),它應該是

相關問題