2012-06-23 96 views
1

我正在構建一個應用程序,我將擁有一個SwingWorker線程,該線程本身可以關閉多個工作線程。當這些子線程完成它們的工作時,我想要實現的是,當父線程中斷時,我希望所有的子線程都停止(,也就是說,它們也要被中斷,以及)。我知道實現這一點的一種方法是使用全局變量,並讓子線程在自己的代碼中檢查這個值。但是,我想知道這是否是一個正確的方法。任何意見/建議,將不勝感激。SwingWorker中斷線程

我基本上有一個簡單的用戶界面與JButton(最初的文本設置爲「開始」)。點擊按鈕後,文本將變爲「停止」,並啓動父SwingWorker線程。該線程將作爲參數發送目錄位置。這個線程輪流做的是爲它在該文件夾中找到的每個文件生成一個執行特定操作的步驟。但是,我想要實現的是,只要單擊JButton,父線程應該停止掃描文件夾,並且孩子應該停止掃描文件。

只是想知道該操作的父線程和子線程之間建議的消息傳遞方法。一個全局變量?任何意見/建議對我都很有幫助。謝謝!

回答

1

一種方法是在父工中覆蓋cancel(),並在每個子工作者上調用cancel(),最後調用super.cancel()

還考慮執行可單獨取消的子工作者的JTable

+0

很酷....我會嘗試這種方法。這看起來比使用全局變量要好。我實際上是在用戶按下JButton時調用cancel()。我認爲凌駕它取消孩子將是一個好主意。感謝@trashgod的建議! – Sujay