java多執行緒停止的方法

2021-09-11 04:23:08 字數 1725 閱讀 1287

一、如何讓乙個執行緒的停止呢?

讓執行緒停止有三種方法:

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