interrupt(),interrupted() 和isInterrupted()使用

Thread類中的三個方法:

    public void interrupt() // 無返回值
    public boolean isInterrupted() // 有返回值
    public static boolean interrupted() // 靜態,有返回值

① interrupt():中斷本線程
myThread.interrupt();//中斷的是調用interrupt()方法的線程
小結:阻塞於wait/join/sleep的線程,中斷狀態會被清除掉,同時收到著名的InterruptedException;而其他情況中斷狀態都被設置,並不一定收到異常。
② isInterrupted():檢測本線程是否已經中斷
myThread.isInterrupted();//判斷本線程myThread是否中斷
如果已經中斷,則返回true,否則false。中斷狀態不受該方法的影響。
如果中斷調用時線程已經不處於活動狀態,則返回false。
③ interrupted():檢測當前線程是否已經中斷
Thread.interrupted();//判斷該語句所在線程是否中斷
如果已經中斷,則返回true,否則false,並清除中斷狀態。換言之,如果該方法被連續調用兩次,第二次必將返回false,除非在第一次與第二次的瞬間線程再次被中斷。
如果中斷調用時線程已經不處於活動狀態,則返回false。

public static boolean interrupted() {
    return currentThread().isInterrupted(true);
}

④ isInterrupted()與interrupted()的區別

isInterrupted()         interrupted()
  實例方法                  類方法
 判斷本線程               判斷當前線程
僅讀取中斷狀態         讀取並清除中斷狀態
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章