Java 線程生命周期是什么呢?在不同階段又有什么含義呢?
線程從創(chuàng)建到運行完成要經(jīng)歷下面這些階段:
- New
- Runnable
- Running
- Non-Runnable (blocked)
- Terminated
New: 已經(jīng)創(chuàng)建了該線程類的實例,但是還沒有調(diào)用 start() 方法。
Runnable: 線程已經(jīng)調(diào)用了 start() 方法,已經(jīng)可以運行了,正在等待線程調(diào)度器(Java 采用操作系統(tǒng)的線程調(diào)度器)來運行。
Running: 線程已經(jīng)被線程調(diào)度器選中并正在運行中。
Non-Runnable (blocked): 線程還存在但是沒有資格運行??赡艿脑蛴校簊leep 操作、等待文件 I/O 的完成或等待釋放鎖狀態(tài)等等。
Terminated: 線程已經(jīng)運行結(jié)束,處于中止?fàn)顟B(tài), run() 方法已經(jīng)退出。
下面這幅圖表述的是各個階段的轉(zhuǎn)換過程:

Java 線程狀態(tài)流轉(zhuǎn).png