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

打印 上一主题 下一主题

主题 854|帖子 854|积分 2562

在Java中,synchronized是用于实现线程同步的关键字,其底层实现原理涉及对象头、监督器锁(Monitor)以及锁升级机制。以下是详细剖析:
<hr> 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)       重量级锁  
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

罪恶克星

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表