轻量级锁解锁过程

来源:9-3 synchronized底层实现原理-2

慕数据5265627

2021-08-01

老师好,轻量级锁解锁是否成功是通过CAS替换是否成功判断,但为什么说替换失败是其他线程尝试过获取该锁,同时锁已膨胀为重量级了呢?我的理解是在线程1加锁成功后执行自己的逻辑期间,此时线程数2来拷贝CAS替换markword也能成功。。那么线程1解锁时CAS替换一定失败,但是只能说明线程2尝试加了锁,并且也拿到了锁。这就有问题了。。。
是我哪里理解的不对呢?

写回答

1回答

翔仔

2021-08-02

同学好,可以结合加锁过程来理解,如果只有自己在操作,CAS替换肯定是成功的,如果出现失败,表示当前线程在执行同步代码块期间,有其他线程也在访问,当前锁资源是存在竞争的,那么锁将会膨胀成重量级锁。

0
0

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

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

8427 学习 · 1870 问题

查看课程