溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中怎么檢測線程中斷狀態(tài)

發(fā)布時間:2021-07-22 16:12:21 來源:億速云 閱讀:130 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關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中怎么檢測線程中斷狀態(tài)就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI