我查了好多文章, 基本上都是一样的.
我想问 轻量锁 会发生自旋吗?? 是在 CAS 操作失败后开始自旋吗?
CAS 操作失败之后会升级到重量锁, 那么如果在 CAS操作失败后自旋, 自旋时间内获取到锁, 还会升级到重量锁(多线程竞争情况下会升级重量锁)吗?
如果轻量级锁的更新操作失败了, 虚拟机首先会检查对象的 Mark Word
是否指向当前线程的栈帧, 如果是就说明当前线程已经拥有了这个对象的锁, 就是一次锁重入会重新创建 Lock Record
并将的 Mark Word
设置为 null
, 否则说明多个线程竞争锁, 就会膨胀为重量锁.?
轻量锁 升级为 重量锁 时, 是什么时候将 锁标识改为 10?
CAS 操作失败有哪些情况?
Q:CAS 操作失败有哪些情况?

A: 多个线程操作同一个变量时,操作对象的锁被其他线程获取时。
Q:我想问 轻量锁 会发生自旋吗?? 是在 CAS 操作失败后开始自旋吗?
Q:膨胀的时机?
A:会,自旋的原理就是CAS操作。
这里好好理解下下面这段描述应该就能明白。我不赘述了。