状态 | 阐明 |
NEW | 当线程被创建后,如通过new Thread(),它处于新建状态。此时,线程已经被分配了必要的资源,但还没有开始执⾏ |
RUNNABLE | 当调⽤线程的start()⽅法后,线程进⼊可运⾏状态。在这个状态下,线程可能正在运 ⾏也可能正在等待获取 CPU 时间⽚,详细取决于线程调度器的调度策略。 |
BLOCKED | 线程在试图获取⼀个锁以进⼊同步块/⽅法时,如果锁被其他线程持有,线程将进⼊壅闭 状态,直到它获取到锁 |
WAITING | 线程进⼊等待状态是由于调⽤了如下⽅法之⼀:Object.wait()或 LockSupport.park()。在等待状态下,线程必要其他线程显式地唤醒,否则不会⾃动 执⾏ |
TIME_WAITING | 当线程调⽤带有超时参数的⽅法时,如Thread.sleep(long millis)、 Object.wait(long timeout) 或LockSupport.parkNanos(),它将进⼊超时等待状 态。线程在指定的等待时间过后会⾃动返回可运⾏状态。 |
TERMINATED | 当线程的run()⽅法执⾏完毕后,大概由于⼀个未捕获的异常终⽌了执⾏,线程进⼊停止状态。⼀旦线程终⽌,它的⽣命周期结束,不能再被重新启动。 |