synchronize关键字的锁升级

在java对象在堆内存中有:对象头和对象数据和对齐偏移量组成

synchronize关键字的锁升级

下面是无锁 升级到轻量级锁

synchronize关键字的锁升级

synchronize关键字的锁升级

当有新的线程尝试获取 偏向锁失败(即修改id),然后在等到上个线程执行到安全点(不是立刻去修改对象的头部)

synchronize关键字的锁升级

轻量级锁的场景:适用于多个线程交替执行

重量级锁:使用与高并发的项目,所以前面申请偏向锁轻量级所等有点多余,浪费时间,直接用重量级锁即可

下面是无锁升级为重量级锁

synchronize关键字的锁升级

synchronize关键字的锁升级

synchronize关键字的锁升级