//返回線程狀態位狀態 public boolean isInterrupted() //設置線程中斷狀態位爲true public void interrupt() //返回線程中斷狀態,並清除中斷狀態 public static boolean interrupted()
NEW:還未啓動,start
TERMINATED:線程運行結束
效果:並不會設置線程的中斷標識位,什麼事也不會發生。html
運行狀態,不必定全部處於RUNNABLE狀態的線程都能得到CPU運行,沒有得到cpu時間片的沒有真正在運行
效果:只是設置中斷狀態位,不會讓線程實際中斷,須要程序本身去判斷(增長程序靈活性)。api
public void run(){ while(true){ //判斷線程是否被中斷了 if (Thread.currentThread().isInterrupted()){ System.out.println("exit MyThread"); break; } } }
該狀態說明該線程因爲競爭某個鎖失敗被掛在了阻塞隊列上
效果:只是設置中斷狀態位,不會讓線程實際中斷spa
WAITING:無期限等待知道notify
TIMED_WAITING:等待指定時間
線程運行中因爲缺乏某個條件而被掛起在某個對象的條件隊列上
效果:會拋出一個InterruptedException異常,並清空中斷標誌位線程
NEW和TERMINATED對於中斷操做幾乎是屏蔽的
RUNNABLE和BLOCKED相似,對於中斷操做只是設置中斷標誌位並無強制終止線程,對於線程的終止權利依然在程序手中。
WAITING/TIMED_WAITING狀態下的線程對於中斷操做是敏感的,他們會拋出異常並清空中斷標誌位。code