Java面试题更新 2026-08-03

请说明Java中线程生命周期的定义,包括其状态划分及各状态之间的转换条件。

考察说明

考查对Java线程状态模型的理解及并发编程基础。

回答思路

  1. 【回答框架 1】Java线程生命周期由Thread.State枚举定义,包含NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED六种状态。NEW是创建后未启动,调用start()后进入RUNNABLE。
  2. 【回答框架 2】RUNNABLE状态涵盖可运行和正在运行,依赖操作系统调度。当线程尝试获取锁但未获得时进入BLOCKED;获得锁后回到RUNNABLE。
  3. 【回答框架 3】WAITING状态由无时限的wait、join或park触发,需外部唤醒;TIMED_WAITING由sleep、带超时的wait或join触发,超时自动返回。
  4. 【回答框架 4】TERMINATED是线程执行完run方法或抛出未捕获异常后的终态。状态转换依赖JVM和操作系统,实际状态可能受调度影响。
  5. 【关键点 1】线程状态由Thread.State枚举定义,共六种。
  6. 【关键点 2】start()使线程从NEW转为RUNNABLE,不能重复调用。
  7. 【关键点 3】BLOCKED与WAITING的区别在于是否等待锁。
  8. 【关键点 4】WAITING需显式唤醒,TIMED_WAITING可自动超时。
  9. 【关键点 5】TERMINATED后线程不可再被启动。
  10. 【易错点 1】不要将RUNNABLE误解为仅运行中,它包含可运行。
  11. 【易错点 2】不要混淆sleep和wait,sleep不释放锁。
  12. 【易错点 3】不能在线程死后重新start,会抛IllegalThreadStateException。