一、如何讓乙個執行緒的停止呢?
讓執行緒停止有三種方法:
1.設定標記位,使執行緒正常退出。
2.使用stop()方法強制退出(不建議使用)。
3.使用thread類中提供interrupt()來中斷執行緒。
1.1設定標記使執行緒退出
public
class
mythread9
implements
runnable
catch
(interruptedexception e)}}
public
void
setflag
(boolean flag)
}
public
class
stoptest1
結果如下:
執行緒:子執行緒第1次執行
執行緒:子執行緒第2次執行
process finished with exit code 0
1.2使用stop()方法
只需將上面程式的 mythread9.
setflag
(false
)替換成thread.
stop()
.
從jdk1.2.後已經不建議使用stop(),因為stop會解除由執行緒獲取的所有鎖定,當在乙個執行緒物件上呼叫stop()方法時,這個執行緒物件所執行的執行緒就會立即停止,假如乙個執行緒正在執行;synchronized void 由於方法是同步的,多個執行緒訪問時總能保證x,y被同時賦值,而如果乙個執行緒正在執行到x = 3;時,被呼叫了 stop()方法,即使在同步塊中,它也會馬上stop了,這樣就產生了不完整的殘廢資料。
1.3、使用thread類中提供的interrupt()方法
呼叫執行緒類的interrupted方法,其本質只是設定該執行緒的中斷標誌,將中斷標誌設定為true,並根據執行緒狀態決定是否丟擲異常。因此,通過interrupted方法真正實現執行緒的中斷原理是:開發人員根據中斷標誌的具體值,來決定如何退出執行緒。
public
class
mythread10
implements
runnable
system.out.
println
("第"
+i+"次執行,執行緒名稱為:"
+thread.
currentthread()
.getname()
);i++;}
catch
(interruptedexception e)}}
public
void
setflag
(boolean flag)
}
public
class
stoptest1
}
結果如下:
第1次執行,執行緒名稱為:子執行緒
退出了false
process finished with exit code 0
Java多執行緒3 停止執行緒
關於執行緒的停止,主要有兩種,一種是自然停止,即執行緒體正常執行完畢。還有一種則是外部干涉,我們主要講的是外部干涉。其實也比較簡單 外部干涉 1 執行緒類中定義執行緒體使用的標識,如boolean型 2 執行緒體中使用該標識 3 提供對外的方法改變該標識 4 外部根據條件呼叫該標識 我們還是用例子來...
java 執行緒停止的方法
1.設定flag,死迴圈中檢測flag是否為false 2.interrupt方法 public static object lock new object public static void main string args catch interruptedexception e thread...
Java多執行緒學習(1) 停止執行緒
呼叫interrupt方法只是對執行緒做了乙個標記 停止標記 並沒有停止執行緒的效果,需要結合以下兩種方法 如果呼叫了interrupt 方法,interrupted 返回true,看乙個例子 threadtest thread new threadtest thread.start thread....