java synchronized偏向锁升级到轻量级锁的疑问?

A线程持有偏向锁,B线程竞争锁,偏向锁升级为轻量级锁,A继续执行,此时B线程会做什么?自旋吗?如果是自旋会不会出现一种情况,同是AB两个线程竞争锁,锁的状态可能因为这两个线程从偏向锁升级到轻量级在升级到重量级?

clipboard.png
如图所示:红色圆圈的地方就是偏向锁升级轻量级锁不确定的地方,没有获取到轻量级的锁会继续尝试获取?

回答:

线程B会再次获取锁 如果再失败 会膨胀成重量级锁 然后自旋一定次数失败后挂起
Ps:我看的源码里和图上的一般说法上认为有出入 并不是先自旋失败再膨胀 而是直接膨胀 再自旋,可能有误

但不管是哪种方式 反正B一直获取锁失败会膨胀成重量级锁就是了

以上是 java synchronized偏向锁升级到轻量级锁的疑问? 的全部内容, 来源链接: utcz.com/p/168910.html

回到顶部