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()
执行完毕或遇到了没有捕获异常