请解释Java中volatile和synchronized在多线程场景下的作用与区别,并说明它们各自适用的场景。
考察说明
考察对Java内存模型、可见性、原子性及锁机制的理解
回答思路
- 明确volatile保证可见性和有序性,但不保证原子性
- 明确synchronized保证原子性、可见性和有序性,通过锁机制
- 能举例说明volatile适用于状态标志位,synchronized适用于复合操作
- 理解volatile禁止指令重排,synchronized通过内存屏障实现
- 能区分两者在性能与适用场景上的差异
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。