ToB企服应用市场:ToB评测及商务社交产业平台
标题:
美团一面:说说synchronized的实现原理?
[打印本页]
作者:
罪恶克星
时间:
4 天前
标题:
美团一面:说说synchronized的实现原理?
在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企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4