
java.lang.Thread.State枚举类列举了线程的六种状态

NEW
使用new Thread()创建一个线程,并且没有调用该线程的start()方法,此时该线程处于NEW状态
RUNNABLE
调用start()方法后,该线程进入RUNNABLE状态
RUNNABLE对应操作系统的Running和Ready两种状态,分别表示正在运行和等待分配CPU资源
BLOCKED
运行到synchronized代码块但未获得对应的锁,线程进入BLOCKED阻塞状态
获得对应的锁后重新进入Runnable状态
WAITING
等待状态,一般用于等待其他线程执行特定的操作
线程调用了没有参数的Object.wait()、Thread.join()方法(其实Thread.join()方法就是调用了Object.wait()方法)、LockSupport.park()方法会进入这个状态
TIMED_WAITING
超时等待状态,线程等待一个时间的流逝,经过这段时间后,该线程由系统唤醒,也可以提前唤醒。
线程调用带参数的Object.wait()、Thread.join()、Thread.sleep()方法、LockSupport.parkNanos()、LockSupport.parkUntil()方法进入该状态
TERMINATED
线程结束
run()执行完毕或遇到了没有捕获异常