新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/9/1 20:04:54来源:尧图网络
【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

相关资讯

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

较早相关资讯

最新相关资讯

从点灯到FOC:嵌入式开发者如何突破技术瓶颈实现高薪进阶 2026/9/2 7:18:23

从点灯到FOC:嵌入式开发者如何突破技术瓶颈实现高薪进阶

这次我们来看一个关于嵌入式开发领域职业发展路径的讨论,核心围绕“FOC(Field-Oriented Control,磁场定向控制)”技术的学习价值与“点灯”这类基础技能练习的对比展开。这个话题源于网络上一个引发热议的观点:有同学因…

阅读更多 →
多乐信ER-660E除湿机实操:60升大除湿量+WiFi远程智控全解析 2026/9/2 7:18:23

多乐信ER-660E除湿机实操:60升大除湿量+WiFi远程智控全解析

多乐信 ER-660E 是一台什么量级的除湿机?看参数就能得出结论:日除湿量 60 升、额定功率 695W、支持 WiFi 远程智控、配松下压缩机,定位很明确,就是家用大吸力除湿。它要解决的场景也很具体:回南天墙面结露、梅雨季衣柜…

阅读更多 →
JavaWeb学生选课系统实战:从MVC架构到高并发处理的完整实现 2026/9/2 7:18:23

JavaWeb学生选课系统实战:从MVC架构到高并发处理的完整实现

简介:这是一套基于JavaWeb技术栈开发的学生选课管理系统完整实战项目,面向计算机专业毕业设计学生及JavaWeb初学者,解决课程管理、角色权限控制与多端业务协同等典型Web应用开发问题。资源包共112个文件,含22个Java源码&#xff0…

阅读更多 →
C语言学生成绩管理系统:从结构体到文件操作完整实现 2026/9/2 7:18:23

C语言学生成绩管理系统:从结构体到文件操作完整实现

简介:面向大一编程初学者,这份以“学生成绩管理系统”为主题的课程设计资源,完整覆盖了信息添加、成绩录入、查询统计和文件读写等常见功能模块,可作为C语言结构化编程与基础数据处理的实践参考。资源压缩包共7个文件,…

阅读更多 →
小白程序员必看:大模型如何赋能九大行业实现智能化升级? 2026/9/2 7:18:23

小白程序员必看:大模型如何赋能九大行业实现智能化升级?

本文介绍了大模型在智慧医疗、自动驾驶、智能制造、智慧金融、智慧教育、智慧农业、智慧零售、智能机器人、生成式AI等九大领域的应用。通过AI技术,各行业实现了从传统模式向智能化的转型升级,具体包括精准诊疗、高阶自动驾驶、工业生产优化、智能风控、…

阅读更多 →
ROS工业级叉车系统重构:定位、控制与多车协同实战 2026/9/2 7:15:23

ROS工业级叉车系统重构:定位、控制与多车协同实战

简介:本资源是一套面向ROS初学者与工业自动化方向学习者的完整叉车定位导航与运动控制实践项目,聚焦物流场景下的单/多车协同调度与栈板识别任务。项目基于Ubuntu 18.04ROS Melodic(兼容16.04Kinetic),涵盖环境建模、贝…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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