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

使用反汇编指令javap查看synchronized实现原理

说明:synchronized是Java中实现进程同步的关键字,可以用于成员方法、静态方法或者代码块上,表示该方法或代码块同一时间只能被一个进程执行。

synchronized不像ReentrantLock,需要显式的加锁、释放锁,它是如何实现线程同步的呢,本文介绍如何使用Java自带的反汇编指令javap查看synchronized实现原理

Demo

先写个Demo,如下:

public class SynchronizedDemo {public void show() {synchronized (this) {System.out.println("这是一段同步代码");}}
}

编译,取出字节码(.class)文件

在这里插入图片描述

反汇编

在字节码文件所在的地方,打开命令窗,敲下面的命令

javap -c -v .\SynchronizedDemo.class

如下,是show()方法的内容

在这里插入图片描述

可以看到 synchronized 实现原理也是加锁、释放锁,值得注意的是,释放锁(monitorexit)执行了两遍,避免进程因异常中断,导致锁未释放。

相关文章:

  • 【OpenCV】双相机结构光成像与图像交叉融合实现【python篇】
  • Cursor 工具项目构建指南:MySql 数据库结构设计的 Cursor 规范
  • PCB设计教程【大师篇】——STM32开发板原理图设计(单片机最小系统)
  • 华为云Flexus+DeepSeek征文 | 基于ModelArts Studio、DeepSeek大模型和Dify搭建网站智能客服助手
  • 基于算法竞赛的c++编程(29)类的概念和简单应用
  • day52 ResNet18 CBAM
  • 【小记】2024-2025生物计算类热点问题
  • 10- AI大模型-LangChainV0.3应用(一) - 简介,模型调用,prompt模板,输出解析器
  • #Word“嵌入式”插图显示不全的解决教程
  • python打卡第50天
  • PG库创建自增ID
  • 操作系统的一些名词
  • UDP(Echoserver)
  • VUE element table 列合并
  • V837s-sdk buildroot文件系统设置串口登录密码
  • 【ModelArts】ModelArts一站式AI开发平台详解(一)
  • 豆包全新视频生成模型、视觉深度思考模型发布
  • 曼昆《经济学原理》第九版 第十五章垄断
  • 线程与进程(java)
  • 汽车生产虚拟实训中的技能提升与生产优化​
  • 做app+的模板下载网站/seo发包排名软件
  • 织梦做的网站为什么显示404/厦门百度关键词优化
  • 一级a做愛网站体验区/站长工具查询
  • 网站开发代做/图片识别搜索引擎
  • 短视频推广广告/泉州seo代理商
  • 罗定网站建设/关键词出价计算公式