JDK中Thread.State提供了6种状态
/**
* 创建线程对象
*/
NEW,
/**
* start方法后
*/
RUNNABLE,
/**
* 遇到同步锁,无法获取锁对象
*/
BLOCKED,
/**
* wait方法
*/
WAITING,
/**
* sleep方法
*/
TIMED_WAITING,
/**
* 线程代码跑完
*/
TERMINATED;
其中RUNNABLE状态可分为2个状态
Ready
当线程创建后,其他线程调用start方法,该线程就进入到就绪状态,JVM就会为创建方法调用栈和程序计数器,处于这个状态的线程位于可运行的池中,等待获取CPU的使用权,其他处于阻塞状态解除阻塞之后也会进入就绪状态
Running
处于这个状态的线程占用CPU,执行程序代码,只有处于就绪状态的线程才会有机会转到运行状态
线程状态.png