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("休眠線程中斷標(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 } } }
二 運行
線程被中斷
休眠線程中斷標(biāo)識位為: false
忙碌線程中斷標(biāo)識位為: true
三 說明
從運行結(jié)果來看,拋出InterruptedException中斷異常的線程(sleepThread),Java虛擬機先將它的中斷標(biāo)識清除(即讓isInterrupted()返回false),然后再中斷這個線程。而一直處于忙碌的線程,中斷標(biāo)識位一直保持有效(isInterrupted()返回true)。
中斷對正在運行的線程不起作用,只對阻塞線程起作用。
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java進程與線程操作技巧總結(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-08java面試JDK8?new?ReentrantLock()加鎖流程解析
這篇文章主要為大家介紹了java面試JDK8?new?ReentrantLock()加鎖流程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07