- 线程状态一共有几种
- 每种状态表示的含义
- 状态之间的切换条件
一,共有六种状态
二,含义
NEW:安排了工作,但还没有开始行动。
RUNNABLE:可工作的,又分为正在工作中和即将开始工作。
TERMINATED:工作完成。
WAITING:排队等着其他事,等待阻塞,需要其它线程唤醒。
BLOCKED:排队等着其他事,同步阻塞,因为资源竞争而引起的阻塞。
TIME-WAITING:排队导致其他事,计时等待阻塞,有一定的时间。
三,切换条件
new:新创建了一个线程对象
runnable:线程对象创建后,通过调用start方法,此时该线程位于可运行的线程池中,等待等等待被调度选中。
terminated:在run方法或主线程的main方法执行结束后,就认为它终止了。线程一旦终止了,就不能复生。
waiting:调用sleep、 wait方法就可进入该状态。进入该状态的线程需要被其它线程唤醒。唤醒后就可以进入runnable状态。
blocked:该状态是由于资源竞争而引起的,调用synchronized方法就会进入该状态。唤醒后就可以进入runnable状态。
time-waiting:该状态是正在按一定的时间进行阻塞,调用sleep、 join、wait方法就可进入该状态。需要自己唤醒自己。唤醒后就可以进入runnable状态。