新闻详情

新闻详情

首页 / 资讯中心 / 详情

【JUC】Synchronized 锁升级底层全拆解,面试官深挖必背

发布时间:2026/9/13 6:37:23来源:尧图网络
【JUC】Synchronized 锁升级底层全拆解,面试官深挖必背
大家好我是程序员二叉。简介本篇为Java并发锁核心干货专攻面试必考Synchronized 全套底层机制。包含Synchronized底层Monitor原理、锁升级完整流程、三锁机制对比、不同修饰锁对象归属、偏向锁撤销重偏向、自适应自旋、锁粗化锁消除JVM优化知识点精炼全覆盖适合面试背诵。欢迎点赞关注收藏。一、synchronized 底层原理synchronized是JVM原生悲观可重入互斥锁底层基于ObjectMonitor监视器 对象头Mark Word实现。1. 代码块锁原理编译后生成两条字节码指令monitorenter抢锁monitorexit释放锁2. 方法锁原理无需指令通过方法访问标记位ACC_SYNCHRONIZED隐式加锁。3. 对象头 Mark Word锁状态、线程ID、GC年龄、锁标记全部存在对象头中是锁升级的唯一载体。4. 可重入原理底层维护锁计数器同一线程多次加锁计数器1释放-1归零才算真正释放。二、Synchronized 锁升级完整流程面试必背锁只能单向升级不可逆、不能降级升级链路无锁 → 偏向锁 → 轻量级锁 → 重量级锁1. 偏向锁无竞争场景首个线程获取锁JVM将对象头标记偏向当前线程。后续无需CAS、无需加锁直接进入同步代码。2. 轻量级锁轻微竞争场景出现多线程交替竞争撤销偏向锁。线程在栈帧创建Lock Record通过CAS自旋抢锁用户态运行不阻塞。3. 重量级锁激烈竞争场景自旋多次失败、锁持有时间长、竞争激烈。直接膨胀为重量级锁依托操作系统Monitor抢锁失败线程进入内核阻塞队列。三、偏向锁 / 轻量级锁 / 重量级锁 对比详解1. 偏向锁适用场景单线程重复执行、几乎无竞争核心原理偏向首个线程消除一切同步操作优点性能极高、几乎零开销缺点多线程竞争时撤销伴随STW开销2. 轻量级锁适用场景线程交替执行、锁时间短、竞争轻微核心原理CAS自旋抢锁、用户态空转、不阻塞线程优点无内核切换、响应快、吞吐高缺点高竞争下自旋空转、浪费CPU3. 重量级锁适用场景并发激烈、锁持有时间长、大量线程竞争核心原理内核级互斥阻塞抢不到锁直接挂起线程优点无自旋消耗CPU缺点用户态内核态切换开销最大四、synchronized 四种修饰方式锁对象是谁修饰普通成员方法锁对象this 当前实例对象不同实例互不竞争、互不影响修饰 static 静态方法锁对象当前类 Class 对象全局唯一类锁所有实例共享竞争修饰同步代码块(this)锁对象当前实例对象修饰同步代码块(自定义对象)锁对象自定义任意 Object 锁对象五、偏向锁撤销 批量重偏向1. 偏向锁撤销触发场景多线程发生锁竞争调用对象hashCode()主动争抢偏向锁撤销需要STW 暂停清空偏向线程ID升级为轻量级锁。2. 批量重偏向JVM优化针对同一类对象撤销次数≥20次开启批量重偏向直接偏向新竞争线程撤销次数≥40次直接关闭当前类的偏向锁目的解决大量偏向锁撤销导致的性能抖动。六、轻量级锁 — 自适应自旋JDK1.6优化摒弃固定自旋次数JVM动态自适应调节上次自旋成功抢锁 → 本次自旋次数增加上次自旋频繁失败 → 减少自旋次数、甚至不自旋极大减少无效CPU空转适配真实并发场景。七、JVM两大锁优化锁粗化 锁消除1. 锁粗化场景循环内频繁加锁、解锁JVM优化合并多次细粒度锁为一次大锁减少频繁monitor切换开销提升执行效率2. 锁消除场景局部锁对象、无逃逸、不共享JVM通过逃逸分析判断无多线程竞争直接消除锁代码彻底去除同步开销面试速记总结Synchronized 底层依托ObjectMonitor 对象头MarkWord锁升级无锁→偏向→轻量→重量单向不可逆偏向锁适配无竞争、轻量级适配低竞争、重量级适配高竞争普通方法锁实例、静态方法锁Class类对象偏向锁支持撤销、批量重偏向解决竞争性能问题JVM优化自适应自旋、锁粗化、锁消除
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Agent数据底座设计:Repository与MemoryStore分层架构 2026/9/13 6:35:43

Agent数据底座设计:Repository与MemoryStore分层架构

1. 为什么说“没有持久化的Agent像金鱼记忆”——从认知架构层面看数据底座的本质你写了一个能调用天气API、能查股票、能总结PDF的Agent,本地跑得飞快,逻辑清晰,测试用例全过。可一旦重启服务进程,它就忘了昨天刚学过的公司财报结…

阅读更多 →
企业AI平台接入能力横评:ERP/CRM/MES深度集成实战 2026/9/13 6:35:43

企业AI平台接入能力横评:ERP/CRM/MES深度集成实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
MATLAB求形心源码详解:鞋带公式与面积加权实现多边形质心计算 2026/9/13 6:35:43

MATLAB求形心源码详解:鞋带公式与面积加权实现多边形质心计算

简介:这套 MATLAB 源码包面向初学者,专注于多边形面积与形心的快速求解,适用于数据分析、图像处理、物理建模等需要几何度量的实际场景。压缩包仅含 2 个 .m 脚本文件,整体大小约 1KB,代码轻量精简,便于直接…

阅读更多 →
前端开发者快速上手AI应用:Next.js + LangChain.js全栈实战 2026/9/13 6:35:43

前端开发者快速上手AI应用:Next.js + LangChain.js全栈实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Python项目CI/CD实战:从工具选型到性能优化 2026/9/13 6:35:43

Python项目CI/CD实战:从工具选型到性能优化

1. Python项目CI/CD的核心价值 对于Python开发者而言,CI/CD(持续集成/持续部署)早已不是可选项而是必选项。我经历过从手动部署到自动化管道的完整转型过程,实测下来团队效率提升能达到300%以上。Python作为动态类型语言&#xff…

阅读更多 →
OI-wiki 广义后缀自动机(General SAM)完全指南:字典树上的后缀自动机构造、线性复杂度证明与多字符串应用 2026/9/13 6:32:42

OI-wiki 广义后缀自动机(General SAM)完全指南:字典树上的后缀自动机构造、线性复杂度证明与多字符串应用

OI-wiki 广义后缀自动机(General SAM)完全指南:字典树上的后缀自动机构造、线性复杂度证明与多字符串应用 【免费下载链接】OI-wiki :star2: Wiki of OI / ICPC for everyone. (某大型游戏线上攻略,内含炫酷算术魔法&a…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞