作者简介: zoro-1,目前大二,正在学习Java,数据结构,javaee等
作者主页: zoro-1的主页
欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖
synchronized内部工作原理
- synchronized的锁策略
- synchronized加锁过程(锁升级)(这个升级过程是不可逆的)
- 锁消除
- 锁粗化
synchronized的锁策略
乐观锁悲观锁自适应
轻量级锁重量级锁自适应
自旋锁挂起等待锁自适应
不是读写锁
非公平锁
可重入锁
synchronized加锁过程(锁升级)(这个升级过程是不可逆的)
- 偏向锁阶段
核心思想就是能不加锁就不加锁,相当于当只有一个线程和这个锁时候,就搞暧昧不加锁,但只要有另外一个线程竞争这个锁,就会在那个线程加上锁之前加上锁(并升级到2阶段),但如果没人竞争就不会加锁
2.轻量级锁阶段
假设现在竞争不多,就会采取自旋锁方式实现,但当现在锁竞争激烈时就会采取锁升级到3阶段
3.重量级锁阶段
这时的锁竞争比较激烈,拿不到锁的线程会挂起等待,让出cpu
锁消除
jvm会在程序不需要锁时自动消除锁(但这个是保守的)
锁粗化
当一个线程粗度比较细时就会把上述加锁解锁过程粗化(如下图)
今天的分享到这里就结束了,感谢大家支持