NEW状态 当创建一个Thread对象但尚未调用其start()方法时,线程处于NEW状态。在这个状态下,线程并未启动,仅完成了初始化阶段。
RUNNABLE状态
RUNNABLE是Java中较为特殊的一个状态,它涵盖了传统操作系统中的就绪和运行两种状态。当线程已启动且CPU调度器为其分配了时间片或线程正在等待系统资源(如I/O操作)时,线程都处于RUNNABLE状态。在Java虚拟机(JVM)中,这样的线程既可能实际在执行,也可能随时准备执行。
BLOCKED状态 BLOCKED状态表示线程因尝试获取锁而被阻塞,暂时无法继续执行。
WAITING状态
当线程调用Object.wait()、Thread.join()或者LockSupport.park()等方法后,主动放弃当前持有的锁并进入WAITING状态,此时线程必须由其他线程通过notify()、notifyAll()或LockSupport.unpark()方法唤醒才能恢复到RUNNABLE状态。
TIMED_WAITING状态
TIMED_WAITING状态与WAITING状态相似,区别在于线程会在指定的时间间隔后自动唤醒,无需其他线程显式地唤醒它。常见的情况包括使用Thread.sleep(long millis)、Object.wait(long timeout)、Thread.join(long millis)或LockSupport类的相关超时方法。
TERMINATED状态 当线程正常结束执行,或者因为异常导致线程终止时,线程就会转为TERMINATED状态。
标签:状态,RUNNABLE,Java,Thread,WAITING,详解,线程 From: https://blog.51cto.com/u_15404648/9594577