场景(线程不安全)
需求(解决线程安全问题)
解决方案(Syschronized)
应用(Syschronized的几种使用:
实例锁(等同于同步代码块的this),
静态方法锁(等同同步代码块的object.class),
代码块
)
原理:
偏向锁(cas判断对象头是否为该线程)->轻量级锁(自旋,若自旋n次后还是失败,或自适应自旋后失败,升级锁)->重量级锁(mutex)
重量级锁执行流程

对象头存储信息:

备注:Syschronized 非公平锁,所以它的重量级锁的同步队列不是FIFO,而是通常随机唤醒一个。