Java 线程状态流转
生活随笔
收集整理的這篇文章主要介紹了
Java 线程状态流转
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Java 線程一共有 6 種狀態(tài):
- NEW:新建狀態(tài),當(dāng)一個線程被創(chuàng)建完成,還沒有調(diào)用 start() 方法時,是這種狀態(tài)。
- RUNNABLE:可運行狀態(tài),當(dāng)一個線程正在正常地執(zhí)行 run() 中的代碼時,是這種狀態(tài)。可運行狀態(tài)包含了
- READY:等待 CPU 執(zhí)行的狀態(tài)。線程正在等待 CPU 調(diào)度運行,或者 CPU 時間片用光,或者調(diào)用了yield() 方法,會是這種狀態(tài)。
- RRUNNING:正在被 CPU 執(zhí)行的狀態(tài)。
- BLOCKED:阻塞狀態(tài),當(dāng)一個線程嘗試獲取對象的監(jiān)視器鎖失敗時(例如未能爭搶到對象的監(jiān)視器鎖,從而被 synchronized 關(guān)鍵字修飾的方法/代碼塊阻塞的線程,這些線程將會放到這個對象的阻塞池(entryList)中),會是這種狀態(tài)。
- WAITING:等待狀態(tài),當(dāng)一個線程被一些沒有過期時間參數(shù)的等待方法(例如 wait()、LockSupport.park()、join() 等方法)所掛起時,會是這種狀態(tài)。這種狀態(tài)的線程不會嘗試去獲取監(jiān)視器鎖。(當(dāng)一個線程調(diào)用了對象的 wait() 方法后,將會被放入這個對象的等待池(waitSet)中)。
- TIMED_WAITING:超時等待狀態(tài),當(dāng)一個線程被一些 有過期時間參數(shù)的等待方法(例如 sleep(long mills)、wait(long mills)、LockSupport.parkNanos()、join(long mills) 等方法)所掛起時,會是這種狀態(tài)。這種狀態(tài)的線程不會嘗試去獲取監(jiān)視器鎖。(當(dāng)一個線程調(diào)用了對象的 wait() 方法后,將會被放入這個對象的等待池(waitSet)中)。
- TERMINATED:死亡狀態(tài),當(dāng)一個線程的 run() 方法執(zhí)行完畢時,會是這種狀態(tài)。
總結(jié)
以上是生活随笔為你收集整理的Java 线程状态流转的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言pID程序怎么设计,51单片机PI
- 下一篇: Java 故障处理与性能监控工具