当前位置: 首页 > article >正文

synchronized内部工作原理

在这里插入图片描述

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

synchronized内部工作原理

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

synchronized的锁策略

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

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

  1. 偏向锁阶段

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

2.轻量级锁阶段

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

3.重量级锁阶段

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

锁消除

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

锁粗化

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述


http://www.kler.cn/a/229519.html

相关文章:

  • Kafka——两种集群搭建详解 k8s
  • 手撕代码: C++实现按位序列化和反序列化
  • 第27章 汇编语言--- 设备驱动开发基础
  • SQL 详解数据库
  • 国产Docker可视化面板Dpanel的安装与功能解析
  • 算法妙妙屋-------2..回溯的奇妙律动
  • OpenFeign之@Headers注解
  • PYthon进阶--网页采集器(基于百度搜索的Python3爬虫程序)
  • 【防止重复提交】Redis + AOP + 注解的方式实现分布式锁
  • Nim游戏
  • 使用 IDEA 开发一个简单易用的 SDK
  • DevOps落地笔记-15|混沌工程:通过问题注入提高系统可靠性
  • re:从0开始的CSS学习之路 1. CSS语法规则
  • 数论:修改数列
  • Spring Data Envers 数据审计实战
  • 编码安全风险是什么,如何进行有效的防护
  • Spring boot 集成redis
  • centos | vscode | 更新迭代太快了吧!
  • No matching client found for package name ‘com.unity3d.player‘
  • 一文简介Maven初级使用
  • Kafka下载(kafka和jdk、zookeeper、SpringBoot的版本对应关系)
  • [C++] 如何使用Visual Studio 2022 + QT6创建桌面应用
  • Kafka零拷贝技术与传统数据复制次数比较
  • VB.NET开发下拉多选功能
  • 『运维备忘录』之 Yum 命令详解
  • Droppy教程 | 轻量文件共享