新建对象在堆内存中
对象头结构32位
无锁状态下(代码写了方法,还没有线程来访问)
获得偏向锁状态
分布式redis
锁的升级
轻量级锁,偏向锁,重量级锁
1.重量级锁:java6之前,synchronize提供了重量级锁
已有线程获得锁,其他线程park等待,挂起在唤醒,这样的话开销会很大。线程需要挂起并且添加到队列中—>重量级锁性能开销大
java6之后引入了轻量级锁,偏向锁,
背景:绝大数情况下,锁不仅仅不存在竞争,而且还是有同一个线程获得
2.引入偏向锁
升级 通过自旋操作
3.自旋
使用场景
AB会显示都成功
但是后面的线程是成功
操作方法乐观锁,悲观锁
使用cas–>实现原子性–>l乐观锁