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

Synchronized升级到重量级锁会发生什么?

我们从网上看到很多,升级到重量锁的时候不会降级,再来线程都是重量级锁
今天我们来实验一把真的是这样的吗

1.首选导入Java对象内存布局的工具库:

 <dependency><groupId>org.openjdk.jol</groupId><artifactId>jol-core</artifactId><version>0.14</version></dependency>

2.代码:

public class Test {static Object LOCK;public static void main(String[] args) throws InterruptedException {LOCK = new Object();System.out.println("无锁的时候对象布局:" + ClassLayout.parseInstance(LOCK).toPrintable());IntStream.rangeClosed(1, 4).forEach(i -> {getLOCK();});Thread.sleep(3000L);System.out.println("无竞争之后,此时对象布局:" + ClassLayout.parseInstance(LOCK).toPrintable());getLOCK();}public static void getLOCK() {new Thread(() -> {try {synchronized (LOCK) {System.out.println("线程[" + Thread.currentThread().getName() + "]" +"重量级锁状态对象布局:" + ClassLayout.parseInstance(LOCK).toPrintable());}} catch (Exception e) {e.printStackTrace();}}).start();}
}

3.结果
请添加图片描述
请添加图片描述

4.结论
从实验我们可以得知,升为重量级锁后,并不会一直是重量级锁,
一开始没有竞争的时候是无锁,然后四个线程来竞争的时候是重量级锁,释放锁之后又是无锁,再来一个线程变为轻量级锁

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 任务2:python+InternStudio 关卡
  • 第五节shell脚本中的运行流程控制(3)
  • 智能水果保鲜度检测:基于YOLO和深度学习的完整实现
  • 学习TS -类型
  • 区块链技术在智能家居中的创新应用探索
  • vscode 文件颜色变绿色
  • “论面向方面的编程技术及其应”,写作框架,软考高级论文,系统架构设计师论文
  • 【IntelliJ IDEA】一篇文章集合所有IDEA的所有设置
  • Spring Boot 3.3 【三】Spring Boot RESTful API 增删改查详细教程
  • UNiapp 微信小程序渐变不生效
  • ue5笔记
  • 渗透测试过程中如何做好个人防护?
  • C++分词工具:Jieba分词
  • 关于git clone速度极慢的解决方法
  • 海思arm-hisiv400-linux-gcc 交叉编译rsyslog 记录心得
  • Angular2开发踩坑系列-生产环境编译
  • Bytom交易说明(账户管理模式)
  • exif信息对照
  • js算法-归并排序(merge_sort)
  • Python_网络编程
  • 对象引论
  • 复杂数据处理
  • 浏览器缓存机制分析
  • 实战|智能家居行业移动应用性能分析
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 项目管理碎碎念系列之一:干系人管理
  • 学习ES6 变量的解构赋值
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 1.Ext JS 建立web开发工程
  • kubernetes资源对象--ingress
  • ​批处理文件中的errorlevel用法
  • ​香农与信息论三大定律
  • ​学习一下,什么是预包装食品?​
  • #includecmath
  • $.ajax()方法详解
  • (1)Jupyter Notebook 下载及安装
  • (10)ATF MMU转换表
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (强烈推荐)移动端音视频从零到上手(上)
  • (三)模仿学习-Action数据的模仿
  • (十一)c52学习之旅-动态数码管
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (学习日记)2024.01.09
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • .NET : 在VS2008中计算代码度量值
  • .Net 代码性能 - (1)
  • .NET 中 GetProcess 相关方法的性能
  • .NET成年了,然后呢?
  • [ C++ ] STL---stack与queue
  • [100天算法】-实现 strStr()(day 52)
  • [17]JAVAEE-HTTP协议
  • [Algorithm][综合训练][体育课测验(二)][合唱队形][宵暗的妖怪]详细讲解
  • [BetterExplained]书写是为了更好的思考(转载)