您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Java中怎么檢測線程中斷狀態,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
一 代碼
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中怎么檢測線程中斷狀態就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。