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()
實例方法 類方法
判斷本線程 判斷當前線程
僅讀取中斷狀態 讀取並清除中斷狀態