Java檢測線程中斷狀態(tài)的方法示例
本文實(shí)例講述了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)識(shí)位為: " + sleepThread.isInterrupted());
System.out.println("忙碌線程中斷標(biāo)識(shí)位為: " + 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)識(shí)位為: false
忙碌線程中斷標(biāo)識(shí)位為: true
三 說明
從運(yùn)行結(jié)果來看,拋出InterruptedException中斷異常的線程(sleepThread),Java虛擬機(jī)先將它的中斷標(biāo)識(shí)清除(即讓isInterrupted()返回false),然后再中斷這個(gè)線程。而一直處于忙碌的線程,中斷標(biāo)識(shí)位一直保持有效(isInterrupted()返回true)。
中斷對(duì)正在運(yùn)行的線程不起作用,只對(duì)阻塞線程起作用。
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java進(jìn)程與線程操作技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
Java+ElasticSearch+Pytorch實(shí)現(xiàn)以圖搜圖功能
這篇文章主要為大家詳細(xì)介紹了Java如何利用ElasticSearch和Pytorch實(shí)現(xiàn)以圖搜圖功能,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下2023-06-06
spring中@ControllerAdvice 注解的使用
@ControllerAdvice注解是Spring3.2中新增的注解,主要用于Controller的全局配置,本文就來介紹一下spring中@ControllerAdvice 注解的使用,感興趣的可以了解一下2024-09-09
Springboot和Jpa實(shí)現(xiàn)學(xué)生CRUD操作代碼實(shí)例
這篇文章主要介紹了Springboot和Jpa實(shí)現(xiàn)學(xué)生CRUD操作代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
Spring @Async 的使用與實(shí)現(xiàn)的示例代碼
本篇文章主要介紹了Spring @Async 的使用與實(shí)現(xiàn)的示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
JavaWeb入門:ServletContext詳解和應(yīng)用
這篇文章主要介紹了Java ServletContext對(duì)象用法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-07-07
記錄jdk21連接SQLServer因?yàn)門LS協(xié)議報(bào)錯(cuò)問題
在使用Druid連接池連接SQL Server時(shí),可能會(huì)遇到因TLS版本不匹配導(dǎo)致的連接失敗問題,具體表現(xiàn)為客戶端使用TLS1.3或TLS1.2,而SQL Server僅支持TLS1.0,導(dǎo)致無法建立安全連接,解決方法是修改JDK的安全配置,啟用TLS1.02024-10-10
java charAt()返回?cái)?shù)值型的使用示例
本文主要介紹了java charAt()返回?cái)?shù)值型的使用示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11

