Java檢測線程中斷狀態(tài)的方法示例
本文實例講述了Java檢測線程中斷狀態(tài)的方法。分享給大家供大家參考,具體如下:
一 代碼
public class InterruptCheck {
public static void main( String[] args ) throws Exception {
// sleepThread不停嘗試睡眠
Thread sleepThread = new Thread(new SleepRunner(), "SleepThread");
sleepThread.setDaemon(true);
// busyThread不停運行
Thread busyThread = new Thread(new BusyRunner(), "BusyThread");
busyThread.setDaemon(true);
sleepThread.start();
busyThread.start();
// 休眠5秒,讓sleepThread和busyThread充分運行
Thread.sleep(5000);
sleepThread.interrupt();
busyThread.interrupt();
System.out.println("休眠線程中斷標識位為: " + sleepThread.isInterrupted());
System.out.println("忙碌線程中斷標識位為: " + busyThread.isInterrupted());
// 防止sleepThread和busyThread立刻退出
Thread.sleep(2000);
}
static class SleepRunner implements Runnable {
@Override
public void run() {
try {
while (true) {
Thread.sleep(10000);
}
} catch (InterruptedException e) {
System.out.println("線程被中斷" );
}
}
}
static class BusyRunner implements Runnable {
@Override
public void run() {
while (true) ;//do nothing
}
}
}
二 運行
線程被中斷
休眠線程中斷標識位為: false
忙碌線程中斷標識位為: true
三 說明
從運行結果來看,拋出InterruptedException中斷異常的線程(sleepThread),Java虛擬機先將它的中斷標識清除(即讓isInterrupted()返回false),然后再中斷這個線程。而一直處于忙碌的線程,中斷標識位一直保持有效(isInterrupted()返回true)。
中斷對正在運行的線程不起作用,只對阻塞線程起作用。
更多java相關內容感興趣的讀者可查看本站專題:《Java進程與線程操作技巧總結》、《Java數(shù)據(jù)結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
相關文章
java面試JDK8?new?ReentrantLock()加鎖流程解析
這篇文章主要為大家介紹了java面試JDK8?new?ReentrantLock()加鎖流程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07

