Untitled

锁定资源

对象头

image.png

Mark Word

mark word主要用来表示对象的线程锁状态,另外还可以用来配合GC、以及存放该对象的hashCode 以64系统为例,mark word是64bit来表示:

image.png

锁类型

优点 缺点 适用场景
偏向锁 加锁和解锁不需要额外的消耗,和执行非同步代码块仅存在纳秒级差距 如果线程间存在锁竞争,会带来额外的锁撤销消耗 适用于只有一个线程访问同步代码块场景
轻量级锁 竞争的线程不会阻塞,提高了程序的响应速度 如果始终得不到锁,使用自旋会消耗CPU 追求响应时间;同步代码块执行时间非常短
重量级锁 线程竞争不使用自旋,不会消耗CPU 线程阻塞,响应时间缓慢 追求吞吐量;同步代码块执行时间较长

偏向锁获取流程

轻量级锁获取流程

重量级锁获取流程