Java架构师面试题目及详细答案.docxVIP

  • 1
  • 0
  • 约1.56万字
  • 约 16页
  • 2026-06-08 发布于河北
  • 举报

Java架构师面试题目及详细答案

一、基础核心(架构师必备,杜绝表面化)

1.题目:Java中的锁机制,偏向锁、轻量级锁、重量级锁的区别,实际项目中如何选择?

详细答案:

首先明确核心:三者都是JVM对synchronized锁的优化,本质是基于“竞争激烈程度”的梯度升级,核心目的是减少锁竞争带来的性能损耗,不是孤立存在的,而是动态升级的(偏向锁→轻量级锁→重量级锁,不可逆)。

1.偏向锁:核心是“无竞争时,避免锁竞争的开销”。适用于单线程重复获取同一把锁的场景(比如单线程操作HashMap、局部循环中的锁)。实现原理是给对象头markword设置“偏向线程ID”,后续该线程获取锁时,直接判断ID匹配,无需CAS操作,几乎无性能损耗。但如果有其他线程竞争,会立即升级为轻量级锁,所以多线程竞争频繁的场景,偏向锁反而会因为“升级耗时”拖慢性能,此时建议关闭偏向锁(-XX:-UseBiasedLocking)。

2.轻量级锁:核心是“少量线程竞争,用CAS替代内核态锁”。适用于线程交替获取锁、竞争不激烈的场景(比如并发量100以内的接口加锁)。实现原理是线程获取锁时,将对象头markword复制到线程栈的锁记录中,通过CAS修改markword为“轻量级锁指针”,如果CAS成功则获取锁;失败则说明竞争加剧,升级为重量级锁。轻量级锁避免了重量级锁的内核态切换开销,但CAS操作

文档评论(0)

1亿VIP精品文档

相关文档