synchronized锁升级原理

news2025/1/18 11:54:16

锁升级过程
jdk1.6之后的优化
synchronized锁有四种状态,无锁,偏向锁,轻量级锁,重量级锁,这几个状态会随着竞争状态逐渐升级,锁可以升级但不能降级,但是偏向锁状态可以被重置为无锁状态。
1、偏向锁
当一个线程获取锁时,会从锁对象的对象头立获取线程id和自己比较,如果是一致,就直接加锁,偏向锁它是适用于一个线程多次获得同一个锁的情况。如果有别的线程来竞争这把锁,需要升级成轻量级锁。
2、轻量级锁
轻量级锁就是线程在占有锁的时候,将锁对象的对象头复制一份到自己的栈帧中,然后使用CAS将锁对象头里的内容换成栈帧的地址。如果此时别的线程来抢锁但是没有抢到,就会一直自旋,当自旋次数达到上限/或者又有一个线程来抢锁,则会升级为重量级锁。
升级成重量级锁之后,重量级锁会把除了拥有锁的线程都阻塞掉,防止CPU空转。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1608378.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

severstal谢韦尔金属数据集CSV格式转YOLO格式

谢韦尔数据集 在kaggle上即可找到,在csdn、百度、知乎上搜索都能搜到,这里不附下载链接了 谢韦尔数据集的标注为CSV文件,格式如下: 谢韦尔数据集为分割数据集,像素编码格式 格式 谢韦尔数据集为像素编码格式&#…

机器学习:考试复习提纲

该页仅为复习资料,内含博客链接均通过搜索得到。 当然直接访问我的GitHub博客会更方便。 1. 线性回归 Linear Regression https://www.cnblogs.com/geo-will/p/10468253.html 要求1:可以按照自己的理解简述线性回归问题。 回归分析是一种预测性的建模…

【FreeRTOS】RTOS任务的同步与互斥:(二)信号量

【FreeRTOS】RTOS任务的同步与互斥:(二)信号量 信号量概念二值信号量二值信号量概念二值信号量相关API函数二值信号量的案例设计cubeMX配置软件程序设计 计数型信号量计数型信号量概念计数型信号量相关API函数二值信号量的案例设计cubeMX配置…

线程池 ThreadPoolExecutor 配置参数详解

《开发语言-Java》 线程池 ThreadPoolExecutor 参数详解 一、引言二、主要内容2.1 核心构造函数2.2 核心线程数2.3 最大线程数2.4 空闲线程存活时间2.5 keepAliveTime 的时间单位2.6 核心线程在空闲时的回收策略2.7 工作队列2.8 线程工厂2.9 拒绝策略 三、总结 一、引言 提到 …

VOJ 网页跳转 题解 STL栈

网页跳转 用例输入 10 VISIT https://www.jisuanke.com/course/476 VISIT https://www.taobao.com/ BACK BACK FORWARD FORWARD BACK VISIT https://www.jisuanke.com/course/429 FORWARD BACK用例输出 https://www.jisuanke.com/course/476 https://www.taobao.com/ https…

JavaEE进阶:基础知识

JavaEE:Java企业开发 Web网站的工作流程 ⽬前用户对PC端应⽤的开发结构模式主要分为C/S和B/S结构. CS即Client/Server(客户机/服务器)结构. 常⻅的C/S架构的应⽤⽐如QQ,CCTALK,各种⽹络游戏 等等,⼀般需…

吴恩达机器学习理论基础—逻辑回归模型

吴恩达机器学习理论基础—逻辑回归模型 说明:逻辑回归解决的是分类问题:例如常见的二分类问题。即得到的输出结果只有两个值的信息。 逻辑回归概念基础 逻辑回归用来解决数据集为0和1的二分类的问题 使用逻辑回归模型来解决对应的问题则需要使用一个函…

在 Ubuntu 12.10 安装 wxPython

安装 wxPython 可以使用 pip 工具,但在 Ubuntu 12.10 上需要首先安装 wxPython 的依赖项。请注意,Ubuntu 12.10 已于2013年终止支持,建议升级到更高版本的 Ubuntu。以下是在 Ubuntu 12.10 上安装 wxPython 的一般步骤: 一、问题背…

【创建型模式】工厂方法模式

一、简单工厂模式 1.1 简单工厂模式概述 简单工厂模式又叫做静态工厂方法模式。 目的:定义一个用于创建对象的接口。实质:由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。 简单工厂模式…

011、Python+fastapi,第一个后台管理项目走向第11步:建立python+fastapi项目,简单测试一下

一、说明 本文章就是记录自己的学习过程,如果有用您可以参考,没用你就略过,没有好与不好之分,今天主要是参考了gitee上的一些项目,一步一步的往后i建立 对于学习来说,如果您有java c等经验,py…

注意力机制基本思想(二)(自注意力机制)

​🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀《深度学习基础知识》 相关专栏: ⚽《机器学习基础知识》 🏐《机器学习项目实战》 🥎《深度学习项目实…

河北专升本(c语言各种编程题)

目录 第一类、递归调用 第二类、特殊数字 第三类、多维数组 第四类、字符处理 第五类、数学问题 第六类、排序算法 第七类、循环问题 第八类、进制转换 第九类、实际应用 第十类、图形输出 第一类、递归调用 1.汉诺塔:请输入盘子数,输出盘子移动…

JVM 性能调优命令(jps,jinfo,jstat,jstack,jmap)

常用命令:jps、jinfo、jstat、jstack、jmap jps jps查看java进程及相关信息 jps -l 输出jar包路径,类全名 jps -m 输出main参数 jps -v 输出JVM参数jps命令示例 显示本机的Java虚拟机进程: # jps 15729 jar 92153 Jps 90267 Jstat显示主类…

【QT进阶】Qt Web混合编程之html、 js的简单交互

往期回顾 【QT进阶】Qt Web混合编程之VS2019 CEF的编译与使用(图文并茂超详细介绍)-CSDN博客【QT进阶】Qt Web混合编程之QWebEngineView基本用法-CSDN博客【QT进阶】Qt Web混合编程之CMake VS2019编译并使用QCefView(图文并茂超详细版本&…

Mamba论文笔记

Mamba论文 结合序列建模任务通俗地解释什么是状态空间模型?创新点和贡献 为什么Mamba模型擅长捕获long range dependencies? 结合序列建模任务通俗地解释什么是状态空间模型? 状态空间模型(State Space Model, SSM)是…

css设置文字撑满盒子

效果如上&#xff1a; <div style"width: 250px;background-color:red;text-align-last:justify;word-break: keep-all;">为中国崛起而读书</div>

Git常见命令行操作和IDEA图形化界面操作

设置Git用户名和标签 在安装完Git以后需要设置用户和签名&#xff0c;至于为什么要设置用户签名可以看一下这篇文章【学了就忘】Git基础 — 11.配置Git用户签名说明 - 简书 (jianshu.com) 基本语法&#xff1a; git config --global user.name 用户名 git config --global u…

漳州不饱和聚酯树脂首次出口非洲

我可以确认&#xff0c;2024年4月中旬左右&#xff0c;漳州新阳科技有限公司制造的不饱和聚酯树脂产品首次出口至非洲市场。这批树脂共计167.2吨&#xff0c;经过漳州市古雷海关的监管放行后&#xff0c;被运往非洲国家阿尔及利亚和莫桑比克。这一举动标志着漳州企业在拓展国际…

深度学习基础之《TensorFlow框架(12)—图片数据》

一、图像基本知识 1、如何转换图片文件 回忆&#xff1a;之前我们在特征抽取中讲过如何将文本处理成数据 思考&#xff1a;如何将图片文件转换成机器学习算法能够处理的数据&#xff1f; 我们经常接触到的图片有两种&#xff0c;一种是黑白图片&#xff08;灰度图&#xff09;…

element-ui form表单自定义label的样式、内容

element-ui form表单自定义label的样式、内容 效果截图 代码 <el-form size"small" :inline"true" label-width"120px"><el-form-item prop"name"><div slot"label"><i style"color: red;"…