线程分为五大状态:新建、就绪、运行、阻塞、死亡。
New,Runnable,Running,Blocked,Terminated.
新建状态(New:
创建好一个系统对象,在调用start()之前,线程处于新建状态。
此时JVM虚拟机仅仅为其分配了内存,仅此而已!
就绪状态(Runnable:
线程对象调用start()之后,程序就进入就绪状态。
一般来说,该不会马上被执行,他需要等待CPU与系统的调度。
运行状态(Running:
此时线程就开始执行run()方法。
但是运行一小段时间之后,系统就会剥夺该线程占用的CPU资源,让给其他线程,此时就回到就绪状态。
阻塞状态(Blocked:
比如sleep(),很好理解。
阻塞状态结束后回到就绪状态。
死亡状态(Terminated:
调用stop()(已被弃用)或者run()方法执行完了,又或者是发生错误,线程就进入死亡状态。
顾名思义,死亡之后线程就不能复活了。