1. 程式人生 > >執行緒的6種狀態(NEW,RUNNABLE,BLOCKED,WAITING,TINED_WATING,TEMINATE)

執行緒的6種狀態(NEW,RUNNABLE,BLOCKED,WAITING,TINED_WATING,TEMINATE)

1,NEW()新建

執行緒剛被建立,但未被啟動。也就是沒有呼叫start方法。

2,Runnable(可執行)

執行緒可以在java的虛擬機器中執行的狀態,可能正在執行自己的程式碼,也可能沒有,這取決於cpu是否掃描到這一個執行緒。

3,Blocked(鎖阻塞)

當一個執行緒試圖獲取一個物件鎖,而這物件鎖被其他執行緒持有,則該執行緒進入Blocked狀態;當該執行緒持有鎖時,該執行緒將變成Runnable狀態。

4,Waiting(無限等待)

一個執行緒在等待另一個執行緒執行一個(喚醒)動作時,該執行緒進入Waiting狀態。進入這個狀態後不能自動喚醒,必須等待另一個執行緒呼叫notify方法或者notifyAll方法時才能夠被喚醒。

5,Time Waiting(計時等待)

同Waiting狀態,有幾個方法超時引數,呼叫他們將進入TimeWaiting狀態。這一狀態將一直保持到超時期滿或者就收到喚醒通知。

帶有超時引數的常用方法有Thread.sleep(毫秒值)方法和Object.wait()方法。(Object必須是鎖物件66)

通俗理解:執行緒在遇到sleep方法和wait方法時就會進入Time Waiting狀態。

6,Teminated死亡狀態

因為run方法正常的退出而死亡,或者因為遇到異常而死亡。