线程的状态及其转换
作者:互联网
线程状态:(六种)
public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED; }
NEW:新建状态
用new创建的线程处于新建状态,此时他和其他的Java对象一样,仅仅在堆中分配了内存
Runable:就绪状态
当线程对象被创建后,调用了start方法,线程就处于就绪状态,处于就绪状态的线程(其他的条件都满足,可以等待获取CPU的使用权),等待获取CPU的使用权
Running:运行状态
处于运行状态的线程也就占用的CPU,执行线程代码。只能就绪状态的线程进入到运行状态
Blocked:阻塞状态
阻塞状态是指线程因为某些原因放弃CPU(缺少资源:IO、锁),暂时停止运行,当前的线程处于阻塞状态
Waiting:等待状态
当线程处于该状态,如果某个线程中的对象的wait()时,JVM就会将线程放入到等待池池
Timed_waiting:超时等待
sleep(long time),jion(long time) 会使线程处于睡眠状态
Terminated:终止状态
当线程执行到run()方法结尾时,就进入到终止状态,该表示线程的生命周期结束
线程状态转换:
一个线程的生命周期中需要的状态:New、Runable、Running、Terminated四个状态。
线程在需要响应的资源时,进入到阻塞状态:阻塞状态包含Waiting,Blocked、Time_waiting状态。
标签:处于,状态,转换,线程,阻塞状态,就绪,CPU 来源: https://www.cnblogs.com/128-cdy/p/12458712.html