Java線程狀態(tài)
Java線程有六個(gè)狀態(tài),可以在Thread類中的枚舉類型State中查看。
1. NEW
當(dāng)Thread剛創(chuàng)建,并且還未調(diào)用start()方法镜粤,此時(shí)的狀態(tài)就是NEW捏题。
2. RUNNABLE
一個(gè)RUNNABLE狀態(tài)的線程已經(jīng)運(yùn)行在JVM中,但是它可能需要等待某些操作系統(tǒng)的資源肉渴,例如CPU公荧。
3. BLOCKED
一個(gè)BLOCKED狀態(tài)的線程正在等待獲取一個(gè)鎖,例如線程A進(jìn)入了synchronized方法同规,若線程B也希望進(jìn)入synchronized方法循狰,此時(shí)線程B等待獲取鎖,進(jìn)入BLOCKED狀態(tài)券勺。
4. WAITING
由于調(diào)用了下列沒(méi)有timeout參數(shù)的方法绪钥,線程將會(huì)進(jìn)入WAITING狀態(tài)。也就是說(shuō)关炼,WAITING狀態(tài)的線程等待另一個(gè)線程完成一個(gè)特殊的行為程腹。
- Object.wait
- Thread.join
- LockSupport.park
5. TIME_WAITING
TIME_WAITING狀態(tài)的線程會(huì)等待一段特定的時(shí)間。當(dāng)調(diào)用下列帶timeout參數(shù)的方法時(shí)會(huì)進(jìn)入TIME_WAITING狀態(tài)儒拂。
- Thread.sleep
- Object.wait
- Thread.join
- LockSupport.parkNanos
- LockSupport.parkUntil
6. TERMINATED
當(dāng)線程完成任務(wù)后進(jìn)入TERMINATED狀態(tài)寸潦。
詳細(xì)分析可以看這篇博客Java線程狀態(tài)分析