有三種方法可以使終止線程。 1. 使用退出標志,使線程正常退出,,也就是當run方法完成后線程終止。 2. 使用stop方法強行終止線程(這個方法不推薦使用,因為stop和suspend,、resume一樣,也可能發(fā)生不可預料的結果),。 3. 使用interrupt方法中斷線程,。 1. 使用退出標志終止線程 當run方法執(zhí)行完后,線程就會退出,。但有時run方法是永遠不會結束的,。如在服務端程序中使用線程進行監(jiān)聽客戶端請求,或是其他的需要循環(huán)處理的任務。在這種情況下,,一般是將這些任務放在一個循環(huán)中,,如while循環(huán)。如果想讓循環(huán)永遠運行下去,,可以使用while(true){……}來處理,。但要想使while循環(huán)在某一特定條件下退出,最直接的方法就是設一個boolean類型的標志,,并通過設置這個標志為true或false來控制while循環(huán)是否退出,。下面給出了一個利用退出標志終止線程的例子。
2. 使用stop方法終止線程 使用stop方法可以強行終止正在運行或掛起的線程,。我們可以使用如下的代碼來終止線程:
3. 使用interrupt方法終止線程 使用interrupt方法來終端線程可分為兩種情況: (1)線程處于阻塞狀態(tài),,如使用了sleep方法,。 (2)使用while(!isInterrupted()){……}來判斷線程是否被中斷,。 在第一種情況下使用interrupt方法,,sleep方法將拋出一個InterruptedException例外,而在第二種情況下線程將直接退出,。下面的代碼演示了在第一種情況下使用interrupt方法,。
注意:在Thread類中有兩個方法可以判斷線程是否通過interrupt方法被終止,。一個是靜態(tài)的方法interrupted(),一個是非靜態(tài)的方法isInterrupted(),,這兩個方法的區(qū)別是interrupted用來判斷當前線是否被中斷,,而isInterrupted可以用來判斷其他線程是否被中斷,。因此,while (,!isInterrupted())也可以換成while (,!Thread.interrupted())。 文章出自 http://www./pdb/java/200904/161228_3.html |
|