執行緒中止方式

2021-09-29 16:19:06 字數 884 閱讀 1098

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...