解锁过程的本质

来源: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替换回到对象头,如果成功,则表示没有竞争发生。如果失败,表示当前锁存在竞争,锁就会膨胀成重量级锁。"

0
0

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程

相似问题