線程將在它的run方法返回時終止。在 JDK1.0中,還存在一個stop方法,其他線程可以調用它來終止線程。不過這個方法現在已經被棄用了。
盡管現在已經沒有強制終止線程的方法了,但是你還是可以用interrupt方法來請求終止一個線程。
為了查明中斷狀態是否被置位了,需要首先調用靜態的thread.currentThread方法來取得當前線程,然后調用它的isInterrupted方法:




沒有任何語言方面的需求要求一個被中斷的線程應該終止。中斷一個線程只是為了引起該線程的注意,被中斷線程可以決定如何應對中斷。某些線程非常重要,以至于它們應該不理會中斷,而是在處理完拋出的異常之后繼續執行。但是更普遍的情況是,一個線程將把中斷看做一個終止請求。這種線程的run()方法遵循如果的形式:

















InterruptedException異常。這樣的run方法的形式如下所示:


















當sleep方法拋出一個InterruptedException異常時,它同時也會清除中斷狀態。
你會在很多發布的代碼中發現InterruptedException異常被抑制在了一個很低的層次上,就像這樣:









不要這樣做!如果你不能很好地在catch字句中來處理異常,那么你還又兩個合理的選擇:
1)在catch字句中,調用Thread.currentThread().interrupt()來設置中斷狀態。然后調用者可以對其進行測試:









2)或者更好的方法,標記你的方法將拋出InterruptedException異常,讓調用(或者,最終的run方法)就能夠捕獲該異常。



