stop
stop方式已被棄用,它會強行中斷程式的執行,導致執行緒安全問題
public
class
demo3
// 輸出結果
thread.
print()
;}}public
class
stopthread
extends
thread
catch
(interruptedexception e)
++j;}}
public
void
print()
}
執行結果:
如上**切換為interrupt中斷時
理論狀態下,i和j的遞增要麼同時成功要麼同時失敗,採用interrupt時符合預期。
如果目標執行緒在呼叫object class的wait()/wait(long)或wait(long,int)方法、join()/join(long,int)或sleep(long,int)方法時被阻塞,那麼interrupt會生效,該執行緒的中斷狀態將被清除,丟擲interruptedexception異常;
如果目標執行緒是被i/o或者nio中的channel所阻塞,同樣i/o操作會被中斷或者返回特殊異常值。達到終止執行緒的目的;
如果以上條件都不滿足,則會設定此執行緒的中斷狀態;
優雅的執行緒中止
stop 中止執行緒,並清除監控器鎖的資訊,但是可能導致執行緒安全問題,jdk不建議使用 執行緒安全問題 當子執行緒未執行完時在主線程使用stop終止了子執行緒會導致執行緒安全問題 示例 package com.hzw public class demo2 thread.print package ...
多執行緒之執行緒的中止
1 安全中止執行緒 安全中止執行緒有以下兩種方法 1.1 執行緒函式返回 直接使用return語句。1.2 呼叫afxendthread函式 函式定義如下 void afxendthread uint nexitcode 引數nexitcode為執行緒的退出碼。執行緒0 setevent m pth...
c 多執行緒 中止前清理
gcc lpthread std c99 o main main.c deepfuture deepfuture laptop mytest main 1chen1 2chen2 3chen6 4chen24 5chen120 6chen720 7chen5040 8chen40320 9chen3...