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+ElasticSearch+Pytorch實現(xiàn)以圖搜圖功能
這篇文章主要為大家詳細介紹了Java如何利用ElasticSearch和Pytorch實現(xiàn)以圖搜圖功能,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解一下2023-06-06
spring中@ControllerAdvice 注解的使用
@ControllerAdvice注解是Spring3.2中新增的注解,主要用于Controller的全局配置,本文就來介紹一下spring中@ControllerAdvice 注解的使用,感興趣的可以了解一下2024-09-09
Springboot和Jpa實現(xiàn)學生CRUD操作代碼實例
這篇文章主要介紹了Springboot和Jpa實現(xiàn)學生CRUD操作代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03
Spring @Async 的使用與實現(xiàn)的示例代碼
本篇文章主要介紹了Spring @Async 的使用與實現(xiàn)的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08
記錄jdk21連接SQLServer因為TLS協(xié)議報錯問題
在使用Druid連接池連接SQL Server時,可能會遇到因TLS版本不匹配導致的連接失敗問題,具體表現(xiàn)為客戶端使用TLS1.3或TLS1.2,而SQL Server僅支持TLS1.0,導致無法建立安全連接,解決方法是修改JDK的安全配置,啟用TLS1.02024-10-10

