我們知道Java的線程一共有6種狀態(tài), 在Thread中定義了枚舉內(nèi)部類來表示.
- NEW(新建): 新創(chuàng)建一個(gè)線程對(duì)象, 并沒有調(diào)用start()方法.
- RUNNABLE(運(yùn)行): Java把操作系統(tǒng)的Ready(就緒)和Running(執(zhí)行)兩種狀態(tài)合并為一種狀態(tài)Runnable.在調(diào)用start()方法后線程處于Ready狀態(tài), 當(dāng)獲得CPU執(zhí)行時(shí)間片后開始執(zhí)行run()犯法的代碼, 此時(shí)線程處于Running狀態(tài).
- BLOCKED(阻塞): 阻塞狀態(tài).
WAITING(等待): 表示線程無限期等待, 需要喚醒才可以繼續(xù)獲得CPU執(zhí)行時(shí)間片.
TIMED_WAITING(限時(shí)等待): 表示在指定時(shí)間內(nèi)等待, 超過對(duì)應(yīng)的時(shí)間進(jìn)入RUNNABLE狀態(tài).
TERMINATED(結(jié)束): 表示線程死亡, 正常結(jié)束或者執(zhí)行拋出異常未被捕獲都會(huì)進(jìn)入該狀態(tài).