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不停運(yùn)行
Thread busyThread = new Thread(new BusyRunner(), "BusyThread");
busyThread.setDaemon(true);
sleepThread.start();
busyThread.start();
// 休眠5秒,讓sleepThread和busyThread充分運(yùn)行
Thread.sleep(5000);
sleepThread.interrupt();
busyThread.interrupt();
System.out.println("休眠線程中斷標(biāo)識位為: " + sleepThread.isInterrupted());
System.out.println("忙碌線程中斷標(biāo)識位為: " + 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
}
}
}
二 運(yùn)行
線程被中斷
休眠線程中斷標(biāo)識位為: false
忙碌線程中斷標(biāo)識位為: true
三 說明
從運(yùn)行結(jié)果來看,拋出InterruptedException中斷異常的線程(sleepThread),Java虛擬機(jī)先將它的中斷標(biāo)識清除(即讓isInterrupted()返回false),然后再中斷這個線程。而一直處于忙碌的線程,中斷標(biāo)識位一直保持有效(isInterrupted()返回true)。
中斷對正在運(yùn)行的線程不起作用,只對阻塞線程起作用。
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java進(jìn)程與線程操作技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章
關(guān)于Java中static關(guān)鍵字的用法
這篇文章主要介紹了關(guān)于Java中static關(guān)鍵字的用法,static:意為靜態(tài)的,在?Java?里面作為靜態(tài)修飾符,可以理解為全局的意思,static?不僅可以修飾成員變量,成員方法,還可以修飾代碼塊,需要的朋友可以參考下2023-08-08
Java集合中的fail-fast(快速失敗)機(jī)制詳解
這篇文章主要給大家介紹了關(guān)于Java集合中fail-fast(快速失敗)機(jī)制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
java面試JDK8?new?ReentrantLock()加鎖流程解析
這篇文章主要為大家介紹了java面試JDK8?new?ReentrantLock()加鎖流程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07

