当前位置: 首页 > article >正文

美团一面:说说synchronized的实现原理?

在Java中,synchronized是用于实现线程同步的关键字,其底层实现原理涉及对象头、监视器锁(Monitor)以及锁升级机制。以下是详细解析:


1. 对象头与Mark Word

每个Java对象在内存中由三部分组成:

  • 对象头(Header) :存储对象的元数据,包括锁状态、GC分代年龄等。
  • 实例数据(Instance Data) :对象的成员变量。
  • 对齐填充(Padding) :确保对象内存对齐。

Mark Word是对象头的一部分,记录了对象的锁状态、哈希码、分代年龄等信息。在32位JVM中,Mark Word占4字节;64位JVM中占8字节。不同锁状态下,Mark Word的内容会动态变化:

锁状态 存储内容
无锁 哈希码、分代年龄、是否偏向锁(0)
偏向锁 线程ID、Epoch、分代年龄、偏向标记(1)
轻量级锁 指向栈中锁记录的指针(Lock Record)
重量级锁

http://www.kler.cn/a/556172.html

相关文章:

  • 服务器释放screen资源(Detached状态并不会释放资源)
  • 华为动态路由-OSPF-完全末梢区域
  • synchronized锁字符串
  • 店铺矩阵崩塌前夜:跨境多账号运营的3个生死线
  • Prompt Engineering的重要性
  • 网络协议如何确保数据的安全传输
  • 达梦clob字段查询优化
  • Java Web开发实战与项目——Spring Boot与Redis实现缓存管理
  • 直播美颜工具架构设计与性能优化实战:美颜SDK集成与实时处理
  • 如何在Vue中更优雅地处理403错误?
  • 面试基础--微服务架构:如何拆分微服务、数据一致性、服务调用
  • 2025年2月一区SCI-海市蜃楼搜索优化算法Mirage search optimization-附Matlab免费代码
  • 初等数论--乘法逆元
  • 如何教计算机识别视频中的人类动作
  • 计算机网络之TCP的可靠传输
  • 【VSCode】MicroPython环境配置
  • 安全问答—评估和应用安全治理原则相关
  • 从CNN到Transformer:遥感影像目标检测的技术演进(矿产勘探、精准农业、城市规划、林业测量、军事目标识别和灾害评估等)
  • 23.3 HtmlElement类
  • 二叉树的前序、中序、后序遍历(递归和非递归实现)