我想在不使用停用的stop()方法的情況下終止java中的線程。 我的線程中的run()方法調用另一個執行可能需要很長時間的任務的方法,並且我希望能夠在它返回之前將其停止。Java - 終止線程
我的問題是,我不想在從run調用的方法中處理這個問題,所以例如我不能使用全局布爾變量來終止線程,因爲我無法檢查它在方法內。 有沒有一種方法可以使用interrupt()方法來實現這個目標?
我想在不使用停用的stop()方法的情況下終止java中的線程。 我的線程中的run()方法調用另一個執行可能需要很長時間的任務的方法,並且我希望能夠在它返回之前將其停止。Java - 終止線程
我的問題是,我不想在從run調用的方法中處理這個問題,所以例如我不能使用全局布爾變量來終止線程,因爲我無法檢查它在方法內。 有沒有一種方法可以使用interrupt()方法來實現這個目標?
簡短的回答:你有有重寫長時間運行的方法,以便它檢查,例如,一些全局布爾值或中斷標誌。根據以下評論中的assylias建議,你可以做例如while (!isInterrupted()) { ... }
。
如果您的長時間運行的方法處於某個(行爲良好的)阻塞調用的中間,那麼您將希望中斷該線程,使其早於阻塞調用返回,以便您可以檢查條件看看是否該結束了。
如果你真的陷入了困境,你能否離開孤立的線程:將其設置爲在從「long method」重新調整時終止自己,將其優先級設置爲儘可能最低,然後忘掉它?最終,它會自行死亡,不需要和不受歡迎。[sob] – 2014-09-24 11:44:00