解锁过程的本质
来源:9-3 synchronized底层实现原理-2
fenkapian
2020-05-04
解锁时会把线程中的mark word替换成当前的mark word?是什么意思呢?替换成当前对象的mark word吗?那就是说线程要去竞争当前对象的锁吗?
写回答
1回答
-
翔仔
2020-05-05
同学好,主要是此处的解锁属于轻量级的解锁过程,mark word里面除了存储当前占用锁的线程信息,还存储了锁的种类,如果此时有其他线程参与竞争,则轻量级锁已经变成了重量级锁了,此时CAS就会失败,失败则证明有其他线程要竞争当前对象。所以才有原话" 轻量级解锁时,会使用原子的CAS操作将Displaced Mark Word替换回到对象头,如果成功,则表示没有竞争发生。如果失败,表示当前锁存在竞争,锁就会膨胀成重量级锁。"
00