外观
一句话答案
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 是"我在里面等别人叫我"——一个被动等锁,一个主动等信号。