首页 > 其他分享 >synchronized原理

synchronized原理

时间:2024-05-28 18:22:08浏览次数:13  
标签:synchronized CAS MarkWord 线程 自旋 原理 ID

对象头 (markword,数组长度,类型指针)   实例数据 (字段1,字段2)  对齐填充 (对其字节)

synchronized修饰方法 多了一个ACC_SYNCHRONIZED 标识符

synchronized修饰代码块 monitorenter和monitorexit

ObjectMonitor里_EntryList和_WaitSet

1.线程在竞争synchronized锁的时候,jvm首先会检查偏向锁的标记位和锁的标记位,判断当前锁是否处于可偏向的状态

2争抢synchronized锁的线程检查锁对象的MarkWord中存储的线程ID是否是自己的线程ID,如果是,在表示处于偏向锁状态,当前线程可以直接执行

3如果锁对象的MarkWord中存储的线程ID不是当前线程,则通过CAS的自旋的方式竞争,如果竞争成果,设置MarkWord的线程ID和偏向锁的标记位和锁的标记位

4如果CAS竞争失败,撤销偏向锁,升级位轻量级锁

5当前线程会把锁对象的MarkWord的线程ID暂停。

6当前线程后上次获取锁的线程开始CAS自旋争锁

7竞争锁成功过的线程获取到锁,修改锁的标识位,进入轻量级锁的状态

8竞争失败的线程会继续用CAS自旋竞争锁,如果自旋成功,还是轻量级锁的状态

9如果CAS自旋一定次数还没有获取到锁,则膨胀位重量级锁,进入重量级锁的状态

 

标签:synchronized,CAS,MarkWord,线程,自旋,原理,ID
From: https://www.cnblogs.com/52hadoop/p/18218621

相关文章

  • Hadoop HDFS NameNode核心原理分析
    胡弦,视频号2023年度优秀创作者,互联网大厂P8技术专家,SpringCloudAlibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者,资深架构师,技术负责人,极客时间训练营讲师,四维口袋KVP最具价值技术专家,技术领域专家团成员,2021电子工业出版社年度优秀作者,获得2023电......
  • 理解Vue 3响应式系统原理
    title:理解Vue3响应式系统原理date:2024/5/2815:44:47updated:2024/5/2815:44:47categories:前端开发tags:Vue3.xTypeScriptSFC优化Composition-APIRef&Reactive性能提升响应式原理第一章:Vue3简介1.1Vue3概述Vue3的诞生背景:Vue2的局限与改进需......
  • 理解Vue 3响应式系统原理
    https://www.cnblogs.com/Amd794/p/18218208 第一章:Vue3简介1.1Vue3概述Vue3的诞生背景:Vue2的局限与改进需求Vue3的主要版本发布日期和目标:稳定性和性能的提升1.2Vue3的新特性TypeScript支持:引入TypeScript作为官方推荐的开发语言,增强了类型安全性和代码质量......
  • sql联合注入原理
    联合注入原理查看源码:可以看到这里没有对传入的id做任何过滤直接就拼接进了查询语句,试试传入?id=1',发现报错:为什么会报错,拼接后的语句:SELECT*FROMusersWHEREid='1''LIMIT0,1可以看到报错是把错误的地方用单引号引用了所以就算不知道后端代码,也能通过报错判断出传......
  • 智能型一体化污水提升泵站工作原理
    诸城市鑫淼环保小编带大家了解一下智能型一体化污水提升泵站工作原理智能一体化污水提升泵站工作原理主要是通过多个潜污泵和一体化智能控制系统的配合来实现。具体来说:1.控制系统:通过控制每个潜污泵的运行和启停,根据污水池的液位传感器所检测到的液位变化,智能......
  • 选择排序.原理讲解
    背景一天,老师要李小明把10000个同学的成绩从高到底排序。李小明蒙了:“这么大,我不行呀!”正文啊,哈喽,小伙伴们大家好。我是#张亿,今天呐,学的是选择排序.原理讲解这就像我们排队是从高到矮一样,将同一类型的数据按一定顺序(从大到小或从小到大)排列称为排序。排序的算法有很多,其......
  • FMC子卡设计原理图:FMC150-两路250Msps AD、两路600Msps DA FMC子卡
    FMC150-两路250MspsAD、两路600MspsDAFMC子卡   一、板卡概述·  ADC采用TI的ADS62P49,2通道250M,14bit,共1片;·  DAC采用ADI的AD9122,2通道,16bit,可达1.2G,共1片;·  时钟采用AD9516,支持板上时钟和外接时钟;·  共6个SSMB接口,1个FMC/LPC接口 ......
  • 【微机原理及接口技术】可编程并行接口芯片8255A
    【微机原理及接口技术】可编程并行接口芯片8255A文章目录【微机原理及接口技术】可编程并行接口芯片8255A前言一、8255A的内部结构和引脚1.与外设接口(数据端口)2.与处理器接口二、8255A的工作方式三、8255A的编程1.写入方式控制字:控制字格式2.读写数据端口3.读写端......
  • 如何理解Spring Boot自动配置原理和应用?
    我们知道,基于SpringBoot,我们只需要在类路径中引入一组第三方框架的starter组件,就能在Spring容器中使用这些框架所提供的各项功能。这在当下的开发过程中已经习以为常,但在SpringBoot还没有诞生之前却是不可想象的。如果我们使用传统的Spring框架,那就需要添加各种繁杂的配置信......
  • 文件系统(五):exFAT 文件系统原理详解
    前言exFAT是微软2006年推出的一种文件系统,距今已快二十年,相比于FAT16和FAT32,exFAT还是算年轻。exFAT一直是微软的一个专用文件系统,直到2019年微软发布它的规范,目前微软拥有exFAT多个元素的专利,如果产品上使用exFAT,需要微软授权,否则有可能侵权。exFAT被SD协会采用作为大于32GBSD......