Java线程有哪些状态?阻塞(Blocked)和等待(Waiting)的区别是什么?
考察说明
考察Java线程状态模型及其转换条件,特别是阻塞与等待的语义差异
回答思路
- 完整列出Java线程的五种或六种状态(NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED)
- 准确说明线程在何种场景下进入BLOCKED(等待获取监视器锁)
- 说明进入WAITING(Object.wait、Thread.join、LockSupport.park)及TIMED_WAITING(带超时)的条件
- 解释阻塞与等待本质区别:阻塞是被动等待锁释放,等待是主动等待其他线程通知或条件
- 能说出状态流转的典型示例,如synchronized竞争、wait/notify协作
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。