1、NEW
含义:线程对象已创建,但尚未启动
主要进入条件:通过 new Thread() 创建线程对象
主要退出条件:调用 start() 方法 -> RUNNABLE
2、RUNNABLE
含义:线程正在 JVM 中执行或准备执行
主要进入条件:start() 方法被调用;等待的条件满足(如所释放、超时、被唤醒)
主要退出条件:等待锁 -> BLOCKED;调用无限制的等待方法 -> WAITING; 调用带超时等待方法 -> TIMED_WAITING; run() 方法执行完毕或异常 -> TERMINATED;
3、BLOCKED
含义:线程被阻塞,等待监视器锁(如 synchronize)
主要进入条件:尝试进入 synchronized 同步块/方法但未能获取锁
主要退出条件:成功获取到监视器锁 -> RUNNABLE
4、WAITING
含义:线程无限期等待其他线程执行特定操作
主要进入条件:调用 Object.wait()(无参)、Thread.join()(无参) 或 LockSupport.park()
主要退出条件:被其他线程通过 notify() / notifyAll() 唤醒 或 被中断 -> RUNNABLE
5、TIMED_WAITING
含义:线程在指定时间内等待
主要进入条件:调用 Thread.sleep(long)、 Object.wait(long)、Thread.join(long) 或 LockSupport.parkNanos() 等带超时参数的方法
主要退出条件:等待超时、被其他线程唤醒或被中断 -> RUNNABLE
6、TERMINATED
含义:线程已执行完毕或因未捕获异常而终止
主要进入条件:run() 方法正常执行结束 或 执行过程中抛出未捕获的异常
主要退出条件:生命周期结束,无法再转换到其他状态
1253

被折叠的 条评论
为什么被折叠?



