Skip to content
基础

一句话答案

6 种状态:NEW→RUNNABLE→(BLOCKED/WAITING/TIMED_WAITING)→TERMINATED,start() 启动,run() 结束后终止。

核心要点

状态转换:

  • NEW → RUNNABLE:start()
  • RUNNABLE → BLOCKED:等待synchronized
  • RUNNABLE → WAITING:wait()/join()/LockSupport.park()
  • RUNNABLE → TIMED_WAITING:sleep()/wait(timeout)
  • → TERMINATED:run()结束
追问与易错

追问方向:

  • BLOCKED 和 WAITING 的区别?
  • interrupt() 能中断什么状态的线程?
  • 守护线程和用户线程的区别?

易错点:

  • ❌ 混淆 BLOCKED 和 WAITING
  • ❌ Thread.stop() 可以停止线程——已废弃

💡 记忆锚点

线程一生六个阶段:出生(NEW)、上班(RUNNABLE)、被挡在门外等锁(BLOCKED)、主动等通知(WAITING)、定闹钟等(TIMED_WAITING)、退休(TERMINATED)。BLOCKED 是"门锁了进不去",WAITING 是"我在里面等别人叫我"——一个被动等锁,一个主动等信号。