synchronized 锁的升级

锁的状态

synchronized 在jdk1.6之前是重量级锁,每次都要去和操作系统打交道,而操作系统层面的操作是比较耗性能的,需要将用户态转换为内核态。所以在jdk1.6后就有了锁的升级过程,总共有四种状态:无锁、偏向锁、轻量级锁、重量级锁。从无锁到重量级锁,锁的粒度在不断加大,而且锁的升级过程是不可逆的。

锁的升级过程


无锁

线程执行非同步方法,不加锁,通过不断自旋进行对资源的修改操作,只有一个线程能操作成功。

偏向锁

线程进入同步方法后,对象头 Mark Word会记录当前线程的Id,此后如果还是该线程进入该同步方法,就不需要再进行加锁解锁的过程了,提高了性能。此外,偏向锁不会自己撤销,只有等有线程竞争时,要升级为轻量级锁时,才会撤销。


轻量级锁

线程进入同步方法获取到偏向锁后,此时又有别的线程也要进来,他们通过自旋的方式,来回获取锁然后执行,此时趋于一种相对平稳的状态,就升级为了轻量级锁,他们不会被阻塞,而是通过自旋的方式去不断获取并执行。


重量级锁

有大量的线程此时都要获取锁,由于锁的竞争非常激烈,如果还是不断通过自旋的方式的话,CPU会出现空转的情况,会大量消耗性能,所以轻量级锁就会升级为重量级锁,此时就是操作系统层面来操作了,通过Mutex Lock互斥量,来决定哪个线程获取到锁。
                       
原文链接:https://blog.csdn.net/weixin_51453935/article/details/132133569

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

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

相关文章

基于电鳗觅食优化算法(Electric eel foraging optimization,EEFO)的无人机三维路径规划(提供MATLAB代码)

一、无人机路径规划模型介绍 无人机三维路径规划是指在三维空间中为无人机规划一条合理的飞行路径,使其能够安全、高效地完成任务。路径规划是无人机自主飞行的关键技术之一,它可以通过算法和模型来确定无人机的航迹,以避开障碍物、优化飞行…

指针【理论知识速成】(5)

一.回调函数: 1.什么事回调函数:通过函数指针调用函数 2.应用例子: https://blog.csdn.net/hot_water_oh/article/details/136572650?spm1001.2014.3001.5501 (此链接为提到转义表所在博客的链接) 依然以转义表为例…

drone ci 是什么

Drone CI是一个开源的持续集成和持续部署(CI/CD)系统,它使用Docker容器技术自动化软件的构建、测试和部署过程。Drone的设计哲学是简单和易用,通过使用Docker容器,它可以很容易地创建隔离的环境来运行测试和部署任务&a…

STM32使用定时器驱动电机

STM32使用定时器驱动电机 1、对定时器进行初始化配置1.1、include "encoder.c"文件 主函数 1、对定时器进行初始化配置 1.1、include "encoder.c"文件 #include "encoder.h"void TIM4_Encoder_Init(u16 arr,u16 psc) { GPIO_InitTypeDef GPIO…

详细讲解Xilinx DDR3 的MIG IP生成步骤及参数含义

前几篇文章讲解了SDRAM到DDR3各自的变化,本文讲解如何使用DDR3,在Altera的Cyclone IV开发板上一般会使用SDRAM作为存储数据的芯片,而Xilinx的S6和7000系列一般使用DDR3作为存储数据的芯片。 从SDRAM芯片内部结构分析其原理,从内部…

策略模式(Strategy mode)

一、策略模式概述 策略模式是一种行为设计模式,它定义了一系列的算法,并将每一个算法封装起来,使它们可以互相替换。策略模式使得算法可以独立于使用它的客户端变化。在游戏开发中,这意味着我们可以根据不同的游戏状态、角色类型…

从空白镜像创建Docker hello world

文章目录 写在前面基础知识方法一:使用echo工具方法二,使用c语言程序方法三,使用汇编语言小结 写在前面 尝试搞了下docker,网上的教程大多是让下载一个ubuntu这种完整镜像,寥寥几篇从空白镜像开始创建的,也…

HSM 网络安全 信息安全

文章目录 HSMHSM信息安全功能汽车电子网络安全中HSM 的应用场景选择适合汽车电子网络安全的 HSM符合汽车安全标准和法规要求的HSMHSM 在汽车电子网络安全中的可靠性和安全性评估汽车电子网络的安全性汽车 HSM(Hardware Security Module)模块开发汽车 HSM(Hardware Security …

文件系统事件监听

文件系统事件和网络IO事件一样,也可以通过epoll或者IOCP 事件管理器统一调度,当所监控的文件或文件夹发生了增删改的事件时,就会触发事件回调,进行事件处理。很常见的应用,如配置文件立即生效功能,就可以通…

SpringBoot自定义banner,自定义logo

SpringBoot自定义banner,自定义logo 在线网站 http://www.network-science.de/ascii/?spma2c6h.12873639.article-detail.9.7acc2c9aSTnQdW https://www.bootschool.net/ascii?spma2c6h.12873639.article-detail.8.7acc2c9aSTnQdW https://patorjk.com/softwa…

官方安装配置要求服务器最低2核4G

官方安装配置要求服务器至少2核、4G。 如果服务器低于这个要求,就没有必要安装,因为用户体验超级差。 对于服务器CPU来说,建议2到4核就完全足够了,太多就浪费了,但是内存越大越好,最好是4G以上。 如果服务器…

创建Django项目,实现视图,路由

初识Django 1、创建Django项目 Django项目的创建的路径不要有中文和空格;【计算机名称不要是中文】 1、在cmd中命令进行创建Django项目打开存放项目的位置创建Django项目:django-admin startproject 项目名称(注意:项目名称不要是中文)启动…

贝叶斯优化的门控循环神经网络BO-GRU(时序预测)的Matlab实现

贝叶斯优化的门控循环神经网络(BO-GRU)是一种结合了贝叶斯优化(Bayesian Optimization, BO)和门控循环单元(Gated Recurrent Unit, GRU)的模型,旨在进行时序预测。这种模型特别适用于时间序列数…

计算机网络概述(接入网和物理媒体)

一、接入网和物理媒体 将终端系统连接到边缘路由器的途径: 住宅接入网、机构接入网络、移动接入网络。 1.接入网:家庭网络 (1)Dial-up(拨号) Modem 将上网数据调制加兹安音频信号上在电话线是哪个传输,在…

VBA(学习笔记)

1. 数据类型 变量定义:Dim 变量名 As 数据类型 变量赋值:变量名 值 1.1 数值型 1.1.1 整数 (1) Byte:1字节(0~255) (2) Integer:2字节(-32768~32767) (3) Long:4…

【网络应用层协议】【MQTT】详解消息队列遥测传输协议MQTT(超详细)

目录 1. MQTT 协议简介 2. MQTT 的特点 3. MQTT 协议原理 4. MQTT协议中的订阅、主题、会话 1. MQTT 协议简介 MQTT( Message Queuing Telemetry Transport,消息队列遥测传输协议 )是一种消息列队传输协议,采用订阅、发布机制&…

arcgis栅格数据处理3——定义投影(同样适用于其他类型文件)

进行数据连接时可能出现未设置投影无法链接的情况,需要先定义投影 点击最右侧“目录”,弹出带有系统工具的面板,点击“data management tools”点击“投影”,“定义投影”

Redis的缓存穿透?缓存击穿?缓存雪崩?

缓存穿透 什么是缓存穿透? 假如我们有一个学生表一共有10条数据,对应的id为1-10。我们有一个请求是通过id去查询学生的信息。正常的流程是请求先到redis里面去找,如果命中就将查询到的结果反回,如果没有就去mysql数据库中找&…

chatgpt与人类有何不同?

ChatGPT和人类之间存在多个显著的差异。 首先,ChatGPT是一种基于人工智能技术的计算机程序,通过机器学习和自然语言处理等技术,从大量的数据中获取知识并生成语言输出。它主要依赖于算法和数据进行工作,能够迅速处理和检索信息&a…

OpenCV(六)——对于图片的算术运行、图片的叠加操作、多通道图像拆分为多个单通道图像

在OpenCV中,可以对于图片进行算法运算。我们知道,图像的本质其实就是矩阵,因此对于图像的算数运算本质上就是对于矩阵的算术运算。在OpenCV可以对图像进行算术运算的操作有加、减、乘、除等操作。 图像的加、减、乘、除操作 两张图像可以进…