首页 > 其他分享 >Monitor的原理

Monitor的原理

时间:2024-11-12 18:47:39浏览次数:3  
标签:Monitor Thread 对象 线程 Owner 原理 唤醒

目录

一.java对象头

二.Monitor原理


一.java对象头

64 位虚拟机 Mark Word: Normal:无锁状态 Biased:偏向锁状态 Lightweight Locked:轻量级锁 Heavyweight Locked:重量级锁 Marked for GC:标记为GC

二.Monitor原理

Monitor 被翻译为 监视器管程         每个 Java 对象都可以关联一个 Monitor 对象,如果使用 synchronized 给对象上锁(重量级)之后,该对象头的 Mark Word 中就被设置指向 Monitor 对象的指针。 Monitor 结构如下: (1)刚开始 Monitor 中 Owner 为 null (2)当 Thread-2 执行 synchronized(obj) 就会将 Monitor 的所有者 Owner 置为 Thread-2 , Monitor 中只能有一 个 Owner (3)在 Thread-2 上锁的过程中,如果 Thread-3 , Thread-4 , Thread-5 也来执行 synchronized(obj) ,就会进入 EntryList BLOCKED (4)Thread-2 执行完同步代码块的内容,然后唤醒 EntryList 中等待的线程来竞争锁,竞争的时是非公平的 (5)图中 WaitSet 中的 Thread-0 , Thread-1 是之前获得过锁,但Owner 线程发现条件不满足,调用 wait 方法进入 WAITING 状态的线程。 (6)BLOCKED 和 WAITING 的线程都处于阻塞状态,不占用 CPU 时间片 BLOCKED 线程会在 Owner 线程释放锁时唤醒。WAITING 线程会在 Owner 线程调用 notify 或 notifyAll 时唤醒,但唤醒后并不意味者立刻获得锁,仍需进入 EntryList 重新竞争

标签:Monitor,Thread,对象,线程,Owner,原理,唤醒
From: https://blog.csdn.net/YouPromise/article/details/143699565

相关文章

  • Kubernetes基础——Kubectl指令原理
    一、查看指令1、查看所有namespaces下的pods信息kubectlgetpods-Akubectlgetpods-nkube-system2、查看所有pods的configmap文件kubectlgetcm-Akubectlgetcm-nkube-system 3、查看没有命名空间的资源kubectlapi-resources--namespaced=false4、查看使用......
  • 深入浅出Word2Vec:从原理到实战,如何利用词嵌入提升NLP应用
    深入浅出Word2Vec:从原理到实战,如何利用词嵌入提升NLP应用引言:为什么Word2Vec如此重要?自然语言处理(NLP)作为人工智能中的核心领域,面临着如何将人类语言转化为机器可以理解的形式的问题。在这方面,Word2Vec模型作为一种强大的词嵌入方法,极大地推动了NLP技术的进步。通过将每个......
  • 【MonitorUtil】java报错日志工具类
     自定义报警日志打印工具importorg.apache.commons.lang.StringUtils;importjava.io.PrintWriter;importjava.io.StringWriter;/***自定义报警日志打印工具**@authorAngel挤一挤*@date2022/12/13*/publicclassMonitorUtil{/***......
  • 深入理解MySQL索引的底层原理和优化
    深入理解MySQL索引的底层原理和优化1.什么是索引索引是帮助MySQL高效获取数据的排好序的数据结构。用于提高查询性能,相当于书的目录。比如我们在读一本书的时候,首先是通过目录来定位到文章的页码,然后通过页码再来快速定位到具体的内容。MySQL中也是一样,在查询数据的时候,首先看......
  • 深入理解数据归一化:原理、方法和应用
    目录引言1.为什么要进行数据归一化?2.常用的归一化方法(1)最小-最大归一化(Min-MaxNormalization)(2)标准化(Standardization)(3)均值归一化(MeanNormalization)(4)缩放到单位范数(ScalingtoUnitNorm)3.归一化的应用场景  (1)深度学习中的数据归一化  (2......
  • 【025A】基于51单片机多功能电子时钟【Proteus仿真+Keil程序+报告+原理图】
    ☆、设计硬件组成:51单片机最小系统+DS1302时钟芯片+LCD1602液晶显示+按键设置+蜂鸣器+LED灯。1、本设计采用STC89C52、AT89C52、AT89S52单片机作为主控芯片,并采用LCD1602进行实时显示信息;2、可以显示年月日,时分秒,星期,以及上/下午;3、可以设置闹钟,并且闹钟数据保存在AT24C......
  • 数据库技术提升-MySQL数据库原理、设计与应用【1.9】
    4.4.4商品表商品分类与商品是一对多的联系,一个分类中有多件商品。商品表的具体结构如表4-14所示。在表4-14中设计的商品表sh_goods共有21个字段,具体说明如下商品id:主键,使用无符号整型存储,自动增长。。·分类id:商品所属分类,使用无符号整型存储,自动增长。S......
  • 深入理解Java线程池:线程任务完成检测的原理与实现
    在Java中,线程池(ThreadPool)是用于管理和复用线程的机制,通过它可以高效地管理多线程任务。一个常见的问题是:线程池是如何知道某个线程的任务已经完成的?本篇文章将深入探讨线程池任务完成的检测原理,并结合代码示例,让大家深入理解线程池的工作方式。推荐正在找工作的朋友们:就......
  • 深入理解Java动态代理:原理、实现与应用
    深入理解Java动态代理:原理、实现与应用在现代软件开发中,面向对象编程(OOP)和面向切面编程(AOP)是两种重要的编程范式。Java语言中的动态代理(DynamicProxy)是实现AOP的关键技术之一,它允许我们在运行时创建一个代理对象,该代理对象可以拦截对真实对象方法的调用,并在方法调用前......
  • XSS 跨站脚本攻击原理、分类与实践
    目录XSS跨站脚本攻击原理、分类与实践一、XSS攻击概述二、XSS攻击原理三、XSS攻击步骤与代码示例反射型XSS前端部分(Vue3+TS)后端部分(Java)模拟攻击的Python代码存储型XSS前端部分(Vue3+TS)后端部分(Java)模拟攻击的Python代码DOM-basedXSS前端部分(Vue3......