一、Mark Word
Java 虚拟机的实现中,每个对象都有一个对象头,用于保存对象信息。对象头中的 Mark Word 是实现锁的关键。
32位机 Mark Word 的结构:
运行期间Mark Word 存储的数据会根据锁标志位的变化而变化,可能储存4种数据:
二、锁的升级
1、偏向锁
JDK6 的一种锁优化方式:如果程序没有竞争,则取消已经取得锁的线程同步操作——若某一锁被线程获取之后,便进入偏向模式,当线程再次请求这个锁时,无需再进行相关同步操作,从而节省操作时间。
JVM 中使用-XX:+UseBiasedLocking
启用偏向锁。
2、轻量级锁
偏向锁失败,JVM 会让线程申请轻量级锁。