JUC:Monitor 与 Java对象头的内容与锁关系

文章目录

  • Monitor
    • java对象头
    • Monitor(锁、管程)

Monitor

java对象头

普通对象
在这里插入图片描述

Mark Word 主要用来存储对象自身的运行时数据、klass word就是指向该对象的类型。

数组对象
在这里插入图片描述

mark word
在这里插入图片描述

不同对象状态下结构和含义不同。

Monitor(锁、管程)

在这里插入图片描述

  • 当synchronized锁一个对象(重量级锁)时会关联一个操作系统的Monitor对象,对象头中markword中ptr_to_heavyweight_montior就会指向对应monitor对象。

  • 同时将Monitor中的owner给对应线程,表示该锁现在对应线程拥有。

  • 如果现在有其他线程尝试加锁,会发现对象指向的Monitor中的owner并不是该线程,就会让该线程进入等待队列,线程阻塞。

  • 如果该锁被释放,那么等待队列中的线程将被唤醒重写争取锁。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaEE 初阶篇-深入了解多线程等待与多线程状态

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 线程等待 1.1 线程等待 - join() 方法 1.1.1 main 线程中等待多个线程 1.1.2 main 线程等待 t2 线程且t2 线程等待 t1 线程 1.1.3 其他线程阻塞等待 main 线程 1.…

期货开户要找到适合自己的系统

物有一个生物圈,大鱼吃小鱼,小鱼吃虾。在期货市场这条生物圈里面,大部分人就是期货市场的虾子,是被吃的,所以必须成长起来,往更高一层走,到可以吃虾子的时候,就是挣钱的时候。学习不…

物流监控升级,百递云·API开放平台助力某电商平台实现高效物流管理

不论是电商平台自身还是消费者,都有着对物流监控的强烈需求。 消费者下单后be like: 每十分钟看一次快递轨迹 放心,电商平台也一样关心物流状态!怎样第一时间向用户传递物流状态? 怎么减少重复的提问和投诉?怎样监管…

2023年EI会议论文已见刊/检索进展汇总

2023年录用的会议论文已在SPIE、ACM、IEEE等出版社正式上线见刊,并已陆续完成EI Compendex数据库收录,详情如下: EIECT 2023——IEEE出版,并完成EI收录 会议信息: 第三届电子信息工程与计算机技术国际学术会议&…

cesium vue 绘制标记实体(撒点),监听鼠标左击事件

添加实体 const viewer new Cesium.Viewer(cesiumContainer, {})viewer.entities.add()查看实体 const viewer new Cesium.Viewer(cesiumContainer, {}) const billboard viewer.entities.add({...})viewer.zoomTo(billboard)删除实体 根据实体删除 if (billboard.value…

治愈自己的短句,心灵鸡汤!

一、不是所有的是非都能理清,不是所有的付出都有收获。有些选择是无可奈何,有些失去是注定的。与其无法言说,不如一笑而过;与其无法释怀,不如安然自若。 二、没人会真正的感同身受到你的痛楚,也没人会真正…

server端

一、创建项目 expess server 1.1 安装nodemon npm i nodemon 1.2 设置连接数据库mongodb 安装mongoose npm i mongoose 在根目录新建config文件夹/db.config.js // 引入mongodb数据库操作模块 const mongoose require("mongoose") // 连接数据库mongoose.con…

【面试那些事儿】浏览器键入网址到网页显示,期间发生了什么

当用户在浏览器中键入网址并按下回车键后,直到最终显示出完整的网页内容,这一过程中经历了哪些步骤呢? 这是一道经典的面试题,我们来看看具体有哪些阶段。 1. 解析URL 浏览器首先解析用户输入的URL,判断它的语法和协…

FastText 增量训练

1.安装正确版本 (1)下载IncrementalTraining分支代码GitHub - SergeiAlonichau/fastText at IncrementalTraining,或者下载资源; (2)将上一步下载的zip进行解压,然后进入文件夹执行make操作即…

Linux 动静态库的制作,使用和加载

Linux 动静态库的制作,使用和加载 一.前置说明1.mylib.h2.mylib.c3.mymath.h mymath.c4.如何制作库 二.动静态库的制作1.静态库的制作1.制作2.使用一下静态库,验证是否成功打包 2.动态库的制作1.编译.c源文件文件生成.o目标文件2.打包生成动态库3.编写makefile文件,自动化制作动…

【问题分析】InputDispatcher无焦点窗口ANR问题【Android 14】

1 问题描述 Monkey跑出的无焦点窗口的ANR问题。 特点: 1)、上层WMS有焦点窗口,为Launcher。 2)、native层InputDispacher无焦点窗口,上层为”recents_animation_input_consumer“请求了焦点,但是”rece…

Abaqus2024混凝土随机多边形及界面层插件AbyssFish_RandomPolygon2D V2版本更新

很高兴地向大家宣布, AbyssFish_RandomPolygon2D插件已经迎来了重要更新!本次更新旨在适配Python3版本的Abaqus2024,并优化插件界面,提升用户体验。同时我们为所有已购买旧版本插件的用户提供免费升级服务! 插件介绍…