简述
以下类图展示了线程生命周期中不同的状态。我们可以创建一个线程并启动它,但是线程状态从Runnable、Running、Blocked等状态的变化取决于系统线程调度器,java本身并不能完全控制。
线程状态
New(新建状态)
当我们用new创建一个线程对象时,线程的状态是***新建状态***,这个状态并不代表线程已经执行了,只是Java编程中的一个内部状态
Runnable(就绪状态)
当我们调用线程实例对象的start()方法时,它的状态变成了*Runnable(就绪状态)*****,这是状态下线程调度器将会调动它
Running(运行状态)
当线程被线程调度器调度后,它的状态变成了Running(运行状态),CPU开始执行这个线程。一个线程的状态之所以可以变为Runnable, Dead 或 Blocked,取决于时间切片
Blocked/Waiting(阻塞/等待状态)
一个线程处于阻塞状态是因为等待其它线程执行完成或等待其它资源。一旦一个线程阻塞状态结束,它的状态将变成Runnable状态并且它将被转移到可执行线程池
Dead(死亡)
一旦线程执行完成,它的状态将被转换为Dead(死亡)