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

多线程锁-synchronized字节码分析

从字节码角度分析synchronized实现

javap -c(v附加信息) ***.class 文件反编译

synchronized同步代码块

>>>实现使用的是monitorenter和monitorexit指令

synchronized普通同步方法

>>>调用指令将会检查方法的ACC_SYNCHRONIZED访问标志是否被设置,如果设置了,执行线

程会将现持有monitor锁,然后再执行该方法,最后在方法完成(无论是否正常结束)时释放

monitor

synchronized静态同步方法

>>>ACC_STATIC、ACC_SYNCHRONIZED访问标志区分该方法是否是静态同步方法

反编译synchronized锁的是什么

面试题:为什么任何一个对象都可以成为一个锁?

C++源码:ObjectMonitor.java--->ObjectMonitor.cpp--->ObjectMonitor.hpp

每个对象天生都带着一个对象监视器,每一个被锁住的对象都会和Monitor关联起来

总结:指针指向Monitor对象(也称为管程或监视器)的真实地址。每个对象都存在着一个monitor

与之关联,当一个monitor被某个线程持有后,它便处于锁定状态。在Java虚拟机(HotSpot)中,

monitor是由OnjectMonitor实现的,其主要的数据结构如下(位于HotSpot虚拟机源码

ObjectMonitor.hpp文件,C++实现):

3. 说说Java"锁"事 · 语雀

相关文章:

  • 自动驾驶:未来的道路上的挑战与机遇
  • Python3入门教程||Python3 SMTP发送邮件
  • MySQL命令行中文乱码问题
  • 机器学习之旅-从Python 开始
  • 【LeetCode高频SQL50题-基础版】打卡第3天:第16~20题
  • 数据结构之堆,栈的实现
  • sheng的学习笔记-【中文】【吴恩达课后测验】Course 2 - 改善深层神经网络 - 第一周测验
  • 微信小程序点单左右联动的效果实现
  • 云原生边缘计算KubeEdge安装配置
  • 分层强化学习 综述论文阅读 Hierarchical Reinforcement Learning: A Comprehensive Survey
  • Postman使用实例
  • 手写Demo体验volatile可见性的作用
  • 计算机网络-计算机网络体系结构-物理层
  • 深度学习笔记之优化算法(三)动量法的简单认识
  • 设计模式之代理模式
  • 【运维笔记】Centos 7.5 安装 Docker详细步骤
  • 光伏发电预测(LSTM、CNN_LSTM和XGBoost回归模型,Python代码)
  • uniapp echarts 适配H5与微信小程序
  • 传统机器学习聚类算法——总集篇
  • kafka简易搭建(windows环境)
  • 视频丨美国两名男童持枪与警察对峙,一人还试图扣动扳机
  • 威尼斯建筑双年展总策划:山的另一边有什么在等着我们
  • 特朗普开启第二任期首次外访:中东行主打做生意,不去以色列
  • 英媒:英国首相住所起火,目前无人伤亡
  • 山东鄄城发生一起交通事故,造成4人死亡、2人受伤
  • 苹果或将于2027年推出由玻璃制成的曲面iPhone