中斷執行緒的方式

2021-10-24 02:22:32 字數 1866 閱讀 3153

變數標識

// 匿名內部類使用區域性變數時, 必須是 final, 否則編譯報錯

// 匿名內部類使用字段, 不需要 final

// 使用 volatile 修飾, 實現多執行緒間變數的可見性

volatile

boolean loop =

true

;/**

* while condition

*/@test

public

void

testwhilecondition()

system.out.

println

("執行緒執行結束...");

}); t.

start()

; threadutils.

sleepquietly(1

);// 結束迴圈

loop =

false

; threadutils.

sleepquietly(2

);}

利用interrupt()isinterrupted()
/**

* interrupt() 方法是 例項方法

* thread 呼叫 interrupt() 後, 該執行緒會丟擲異常

*/@test

public

void

testinterrupted()

system.out.

println

("執行緒被打斷了...");

});// 執行緒啟動之前, 呼叫 interrupt() 方法, 什麼也不做

// 啟動執行緒

t.start()

; threadutils.

sleepquietly(1

);// 呼叫 interrupt() 方法時, 該執行緒只有在處於阻塞狀態 (sleep join wait) 時, 才會丟擲 interruptedexception, 否則什麼也不做

t.interrupt()

; threadutils.

sleepquietly(5

);}

利用 interrupt() interruptedexception
/**

* interrupt() 方法是 例項方法

* thread 呼叫 interrupt() 後, 該執行緒會丟擲異常

*/@test

public

void

testinterrupt()

catch

(exception e)})

;// 執行緒啟動之前, 呼叫 interrupt() 方法, 什麼也不做

// 啟動執行緒

t.start()

; threadutils.

sleepquietly(1

);// 呼叫 interrupt() 方法時, 該執行緒只有在處於阻塞狀態 (sleep join wait) 時, 才會丟擲 interruptedexception, 否則什麼也不做

t.interrupt()

;// 在呼叫完 interrupt() 後, 通過 isinterrupted() 判斷執行緒是否被打斷了 (即丟擲 interruptedexception 異常)

system.out.

println

("主線程 thread.currentthread().isinterrupted() = "

+ t.

isinterrupted()

);threadutils.

sleepquietly(5

);}

Java中斷執行緒的方式

方式一 stop 方法 目前改方法已被註解 deprecated,因為它是執行緒不安全的操作,呼叫stop方法後,執行緒會立即停止,導致執行緒邏輯有一部分未執行,造成得到不可預期的結果。如下 中,預期輸出的結果是i j,但是使用stop中斷執行緒後,大概率出現j i 1.public class s...

中斷執行緒 interrupt

呼叫interrupt 通知執行緒應該中斷 1 如果執行緒處於阻塞狀態,則執行緒立即退出被阻塞狀態,並丟擲乙個interruptedexception異常 2 如果執行緒處於正常活動狀態,那 package com.mall.controllor.alene import sun.managemen...

JUC中斷執行緒兩種方式

方式一catch了interruptedexcetion之後的優先選擇 在方法簽名中丟擲異常 那麼在run 就會強制try catch package threadcoreknowledge.stopthreads import threadcoreknowledge.createthreads.t...