1, 背景:加锁(重量级锁)是一种阻塞期待的行为, 在某些场景下,能够用别的计划来代替阻塞,晋升cpu利用率,让cpu不必在那闲着
2,重入锁场景:某线程在持有某锁时, 再次申请该锁,这种场景下,产生了 偏差锁. 偏差锁是第一次桎梏时的锁的类型.这个第一步的逻辑是,从锁对象头的mark word里判断以后锁是否偏差锁,且持有锁的线程是否以后线程,如果是,则锁胜利.如果否, 则批改mark word里的锁类型 ,改为轻量级锁
3,当获取到锁之后执行的工作耗时较低时,比方对某个变量自增,其余的竞争锁能够让cpu循环屡次尝试竞争锁,这个行为就是自旋, 此时的锁类型 是轻量级锁.
4,当获取到锁之后执行的工作耗时较高时,其余线程自旋肯定次数后,发现依然没取得锁, 此时,就将 mark word里的锁类型升级成 重量级锁. 从此, 有线程想竞争该锁,只有CAS竞争失败, 就只能阻塞了.

参考:https://blog.csdn.net/qq_45795744/article/details/123493673?s...