首页 > 其他分享 >synchronized 原理

synchronized 原理

时间:2022-08-30 14:45:51浏览次数:40  
标签:monitor synchronized 队列 object 对象 线程 owner 原理

java中每一个对象都有一个objectMonitor对象与之关联

monitor对象中主要有如下属性:

  owner:持有当前objectMonitor的线程地址

  entrylist:阻塞队列,存放竞争当前monitor对象的线程

  waitset:等待队列,存放处于wait状态的线程

 

synchronized(object){} 其实就是 monitorEnter(object),代码块,monitorExit(object)

monitorEnter(object)时,线程会尝试修改object对应的monitor对象的owner为当前线程CAS,修改成功,则执行代码块,然后执行monitorExit(object),将owner置为null。

如果修改object对应的monitor对象的owner为当前线程失败了,则当前线程进入该minitor对象的阻塞队列,CAS。

如果在monitorEnter(object)后,调用wait,则进入等待队列,会释放锁(将owner置为null),直到被唤醒后(notify),该线程再进入阻塞队列,然后CAS。

 

参考:https://zhuanlan.zhihu.com/p/377423211

标签:monitor,synchronized,队列,object,对象,线程,owner,原理
From: https://www.cnblogs.com/sjj123/p/16639247.html

相关文章

  • 并发编程五、CAS与AQS原理及源码分析
    前言:文章内容:线程与进程、线程生命周期、线程中断、线程常见问题总结本文章内容来源于笔者学习笔记,内容可能与相关书籍内容重合偏向于知识核心总结,非零基础学习文章,可......
  • 220829-Burpsuite的工作原理
    扩展:网络流量监控一般有两种模式:一种是串联模式,另一种是旁路镜像模式。串联模式下,流量会依次经过监控设备、被监控设备,二者之间是一个串行的关系。旁路镜像模式下,流量会经......
  • Docker0网络及原理探究
    本篇接着上篇:【Docker0网络及原理探究】,继续深入探究容器网络通信原理,通过学习Docker网路驱动模型,更好地解决容器间的通信问题......
  • 磁共振成像原理
    目录1.原子核的自旋2.进动3.磁共振现象4.射频脉冲1.原子核的自旋原子有原子核和绕核运动的电子组成。原子核的自旋:质子数和中子数一个为奇数、一个为偶数;两者......
  • BTC笔记-01-密码学原理
    BTC-密码学原理B站视频链接比特币中使用了密码学的两个功能:哈希和签名哈希crypto-currency加密货币cryptographichashfunction密码散列函数,其具有两个特性:具......
  • TCP协议原理
    TCP/IP协议原理_一个懂技术的项目经理的博客-CSDN博客_tcp/ip协议原理 https://blog.csdn.net/apanious/article/details/51014333TCP协议原理TCP每发送一个报文段,就启......
  • CFA - 金融工程 - 11.衍生证券定价原理
    目录   一、绝对定价法vs相对定价法   二、无套利定价   三、鞅定价方法的运用 ......
  • 嵌入式系统原理及应用教程课后习题(未完持续更新中)
    第一章:嵌入式系统概述1.1嵌入式系统的概念是什么?  以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的......
  • Spring5.2.x-06-Spring扫描原理
    在ConfigurationClassPostProcessor内部完成扫描在扫描的时候,为什么要用asm,如果直接用类,可能会把static里的直接执行了,spring尽量做到不直接影响用户(比如这......
  • Java synchronized锁升级过程验证
    ​Java对象结构 ​  一个对象包括三部分:对象头实例数据对其填充 对象头:MarkWord:用于存储对象自身运行时的数据,如哈希码(HashCode),GC分代年龄,锁状态标志,......