1.6锁的升级过程

news2024/10/6 22:27:43

在这里插入图片描述

一、偏向锁

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

轻量级锁

当有新的线程进来时
在这里插入图片描述

在这里插入图片描述
其实就是竞争不激烈,但是确实存在多个锁竞争的情况,而且是,大家都很有序的进行,一释放,下一个线程就拿到锁,很有顺序的获取锁,基本上通过自旋的方式代替了Sync… 本质是自旋CAS完成。

在这里插入图片描述
那自旋CAS什么时候会升级成为重量级锁。

重量级锁

轻量级锁升级为重量级锁的步骤如下:

当一个线程尝试获取一个已经被另一个线程持有的轻量级锁时,它会进入自旋等待。在这个过程中,它会不断地检查锁是否被释放。
如果自旋等待超过了预设的次数(即自旋阈值),JVM会认为线程之间的竞争非常激烈,因此决定将轻量级锁升级为重量级锁。这个过程是通过膨胀(inflate)操作实现的。
膨胀操作会将轻量级锁的标记位改为重量级锁的标记位,并将当前持有锁的线程的ID存储在对象头中。这个过程需要CAS(Compare-And-Swap)操作来保证原子性。
一旦膨胀操作完成,其他尝试获取该锁的线程将被阻塞并放入锁的等待队列中。此时,锁的竞争已经变得非常激烈,因此需要使用更重的锁策略来确保线程安全。
重量级锁的释放过程相对复杂。当持有锁的线程释放锁时,它会唤醒等待队列中的一个线程来竞争该锁。这个过程涉及到线程的挂起和唤醒操作,因此开销较大。

1、调用在这里插入图片描述

在这里插入图片描述

调用完对象的HashCode方法后,这个对象将永远无法转成偏向锁。只能转成轻量级锁或者重量级锁,为了不能转成偏向锁,是因为HashCode生成了以后,在升级成偏向锁,没有地方存这个hashCode,因为官方的建议是hashCode只能生成一次。

或者说当线程获得偏向锁时,我们调用HashCode方法,锁会升级成了轻量级锁或者重量级锁。

在这里插入图片描述
轻量级锁时,栈的锁指针记录可以保存hashCode.

在这里插入图片描述

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

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

相关文章

leetcode:414. 第三大的数

一、题目 函数原型:int thirdMax(int* nums, int numsSize) 二、思路 将数组降序排序。 如果数组元素个数小于3,直接返回第一个元素; 如果数组元素个数大于等于3,且不同元素个数小于3,直接返回第一个元素; …

sqli-labs靶场详解less-24(二次注入)

less-24 对于一个像我一样的小白来说这关就像php代码审计 一开始进行判断注入点的时候怎么都找不到一点思路都没有 只能搜教程 说是二次注入 从来没遇见的题型 于是从代码审计开始 先说一下什么叫二次注入 二次注入 二次注入是指通过SQL语句存储到数据库的用户输入被读取后再次…

创建SpringBoot Helloword 程序详细步骤

本文档实现SpringBoot hello word 程序,翻译于Spring | Quickstart 目录 一、项目创建步骤1.1 创建项目1.2 添加代码1.3 运行 参考教程 一、项目创建步骤 1.1 创建项目 在官网Spring Initializr上创建项目 1.2 添加代码 在IDE中打开项目并在src/main/java/com/zo…

【数据结构】二叉树之链式结构

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一、前置说明二、二叉树的遍历2.1 前序遍历2.2 中序遍历2.3 后序遍历2.4 层序遍历 三、…

mysql处理40w数据脚本执行慢问题

需求背景: 2张表 SS_ZYXX 1w数据,WD_GZPZ 50w数据 SS_ZYXX.id WD_GZPZ.zyxx_id 找到SS_ZYXX表有数据,关联表WD_GZPZ没有数据的SS_ZYXX表的id 处理方案 方案一: 联合查询: 下面sql,在mysql执行时间3…

netty(三) taskQueue自定义任务,http服务器快速入门,netty核心模块,Unpooled

如果执行某些业务比较复杂,比较耗时,可以使用异步来完成 当然可以有多个任务 上面的结果是,在第一个任务处理完,再等20秒执行,简单来说,就是第一个在10秒执行,第二个在第30秒的时候执行&#…

vue2使用ts vue-class-component

目前,对于Vue3来说,TypeScript的支持已经相当成熟,但公司的老项目一直处于迭代和维护无法从v2重构成v3,并且重构的成本也是很大的一个问题,所以记录一下vue2如何去搭配TypeScript。 目录 一、脚手架创建项目 二、vu…

二叉树的递归套路(2)

与其明天开始,不如现在行动! 文章目录 最大二叉搜索树 💎总结 最大二叉搜索树 题目 给定一颗二叉树的头节点head,返回这颗二叉树中最大的二叉搜索子树的节点数量 搜索二叉树:整棵树上没有重复值,左树的值都…

解决ansible批量加入新IP涉及known_hosts报错的问题

我们把一批新的IP加入到ansible的hosts文件,比如/etc/ansible/hosts,往往会有这样的提示, 因为本机的~/.ssh/known_hosts文件中并有fingerprint key串,使用ssh连接目标主机时,一般会提示是否将key字符串加入到~/.ssh/…

【密码学引论】分组密码

第三章 分组密码 DES、IDEA、AES、SM4 1、分组密码定义(按照五个组成部分答) 密钥空间:属于对称加密算法kekd明密文空间:将明文划分为m比特的组,每一块依次进行加密加解密算法:由key决定一个明文到密文的…

Redis多机数据库

文章目录 Redis多机数据库一、主从复制1、旧版复制功能的实现a、同步b、命令传播 2、旧版复制功能的缺陷3、新版复制功能的实现a、部分同步功能b、复制实现步骤 4、心跳检测 二、哨兵1、Sentinel概念2、Sentinel初始化流程3、故障转移过程 三、集群1、几个概念2、集群创建流程a…

西南科技大学(数据结构A)期末自测练习一

一、填空题(每空0.5分,共5分) 1、数据结构是指( A )。 A、数据元素的组织形式 B、数据类型 C、数据存储结构 D、数据定义 2、数据结构被形式地定义为(D,R),其中D是( B )的有限集合,R是D上( D )的有限集合。 (1)A.算法B.数据元素C.数据操作D.逻辑结构 (2)A.操作B.…

springboot启动Table ‘xxx‘ already exists

jpa.generate-ddl和jpa.hibernate.ddl-auto都可以控制是否执行datasource.schema脚本,来初始化数据库结构,只要有一个为可执行状态就会执行,比如jpa.generate-ddl:true或jpa.generate-ddl:update,并没有相互制约上下级的关系。 要…

使用com组件编辑word

一个普通的窗体应用,6个button using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; u…

Kafka 如何保证消息消费的全局顺序性

哈喽大家好,我是咸鱼 今天我们继续来讲一讲 Kafka 当有消息被生产出来的时候,如果没有指定分区或者指定 key ,那么消费会按照【轮询】的方式均匀地分配到所有可用分区中,但不一定按照分区顺序来分配 我们知道,在 Kaf…

【操作宝典】SQL Server Management

目录 ⛳️【SQL Server Management】 ⛳️1. 启动登录 ⛳️2. 忘记密码 ⛳️3. 操作数据库和表 3.1 新建数据库text 3.2 新建表 3.3 编辑表 3.4 编写脚本 ⛳️【SQL Server Management】 ⛳️1. 启动登录 需要开启服务 ⛳️2. 忘记密码 登录windows--> 安全性 -->…

优雅使用docker-compose部署Skywalking

Skywalking使用docker-compose部署 version: 3.1 services: // 部署elasetic search 用于存储获取的应用信息与日志elasticsearch:image: elasticsearch:7.13.3container_name: elasticsearchprivileged: trueenvironment:- "cluster.nameelasticsearch" #设置集群名…

Vue3使用kkFileView预览文件pdf

kkFileView - 在线文件预览kkFileView官网 - kkFileView使用Spring Boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,Excel,pdf,txt,zip,rar,图片等等https://kkfileview.keking.cn/zh-cn/docs/usage.html业务场景&#xf…

powershell获取微软o365 21v日志

0x00 背景 o365 21v为o365的大陆版本,主要给国内用户使用。微软提供了powershell工具和接口获取云上日志。微软o365国内的代理目前是世纪互联。本文介绍如何用powershell和配置证书拉取云上日志。 0x01 实践 第一步,ip权限开通: 由世纪互联…

生命科学领域 - 新药从研发到上市全流程

新药是指新研制的、临床尚未应用的药物,其化学本质应为新的化合物或称新化学实体、 新 分子实体、新活性实体。新药研发的根本目的是治疗疑难危重疾病,研制出来的药物即使是全新的化学结构,但是疗效或安全性却不及现有的药物便失去新药价值&a…