根据JDK文档的描述,Thread 运行状态一共可分为6种。
NEW
尚未启动的线程的线程状态。
RUNNABLE
一个可运行的线程的线程状态。在运行状态的线程在java虚拟机执行,但它可能在等待其他资源,如处理器的操作系统。
BLOCKED
线程阻塞等待监视器锁的线程状态。在阻塞状态的线程等待监控锁进入一个同步块/方法或进入一个同步块/方法调用后 Object.wait
。
WAITING
等待线程的线程状态。一个线程处于等待状态由于调用以下方法之一:
Object.wait
没有超时Thread.join
没有超时LockSupport.park
等待状态中的一个线程正在等待另一个线程执行特定的动作。例如,一个线程,称一个对象Object.wait()等待另一个线程调用此对象上的Object.notify()或Object.notifyAll()。一个线程,称Thread.join()等待指定线程终止。
TIMED_WAITING
具有指定等待时间的等待线程的线程状态。一个线程在等待状态的时间由于调用下面的方法用指定的正等待时间:
TERMINATED
终止线程的线程状态。线程已完成执行。
图片来自网络上,图片中多了RUNNING和READY状态。分别是获取到cpu执行时间和让出cpu执行时间的状态。