ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

synchronized内部工作原理

synchronized内部工作原理

在这里插入图片描述

作者简介: zoro-1,目前大二,正在学习Java,数据结构,javaee等
作者主页: zoro-1的主页
欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

synchronized内部工作原理

  • synchronized的锁策略
  • synchronized加锁过程(锁升级)(这个升级过程是不可逆的)
  • 锁消除
  • 锁粗化

synchronized的锁策略

乐观锁悲观锁自适应
轻量级锁重量级锁自适应
自旋锁挂起等待锁自适应
不是读写锁
非公平锁
可重入锁

synchronized加锁过程(锁升级)(这个升级过程是不可逆的)

  1. 偏向锁阶段

核心思想就是能不加锁就不加锁,相当于当只有一个线程和这个锁时候,就搞暧昧不加锁,但只要有另外一个线程竞争这个锁,就会在那个线程加上锁之前加上锁(并升级到2阶段),但如果没人竞争就不会加锁

2.轻量级锁阶段

假设现在竞争不多,就会采取自旋锁方式实现,但当现在锁竞争激烈时就会采取锁升级到3阶段

3.重量级锁阶段

这时的锁竞争比较激烈,拿不到锁的线程会挂起等待,让出cpu

锁消除

jvm会在程序不需要锁时自动消除锁(但这个是保守的)

锁粗化

在这里插入图片描述

当一个线程粗度比较细时就会把上述加锁解锁过程粗化(如下图)

在这里插入图片描述

                           今天的分享到这里就结束了,感谢大家支持

在这里插入图片描述

返回列表