變數標識
// 匿名內部類使用區域性變數時, 必須是 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...