NEW
:一个线程被创建但是没有调用start
方法
RUNNABLE
:可运行的线程,即线程执行了start
方法之后,正在执行或者正在等待某个资源
BLOCKED
:线程等待锁来进入同步方法或代码块。
WAITING
:一个线程正在等待另一个线程来唤醒,可能是由于调用了以下方法:
- 调用不带timeout参数
Object.wait
方法、 - 调用不带timeout参数的
Thread.join
方法、 - 调用
LockSupport.park
方法。 - 调用了
Thread.join
方法会等待直到特定的线程终止。
TIMED_WAITING
:在WAITING基础上有一个特定的超时时间。可能是调用以下方法(均指定了一个超时时间):
Thread.sleep
方法Object.wait
方法Thread.join
方法LockSupport.parkNanos
方法LockSupport.parkUntil
方法
TERMINATED
:线程退出,线程已经完成了执行、即死亡。
这些状态是JVM中线程的状态,并不是操作系统中线程的状态