首页 > 其他分享 >030_八锁现象

030_八锁现象

时间:2022-11-15 21:13:54浏览次数:53  
标签:八锁 main synchronized 对象 解锁 现象 线程 030 执行

目录

synchronized 对象锁

第一种情况

:::info
结果:发短信打印,1s后打电话打印
分析:A线程和B线程是同一个对象调用方法,所以是同一把对象锁
流程:main线程执行,A线程就绪,A线程执行,synchronized对phone对象加锁,同时main线程睡眠1s后继续执行,B线程就绪等待phone对象解锁,A线程执行完phone对象解锁,B线程执行
:::
image.png
image.png
image.png

第二种情况

:::info
结果:4s后发短信打印,打电话打印
分析:A线程和B线程是同一个对象调用方法,所以是同一把对象锁
流程:main线程执行,A线程就绪,A线程执行,synchronized对phone对象加锁,A线程睡眠4s,同时main线程睡眠1s后继续执行,B线程就绪等待phone对象解锁,A线程执行完phone对象解锁,B线程执行
:::
image.png
image.png

第三种情况

:::info
结果:1s后hello打印,4s后发短信打印
分析:A线程调用的方法有锁,B线程调用的方法没有锁
流程:main线程执行,A线程就绪,A线程执行,synchronized对phone对象加锁,A线程睡眠4s,同时main线程睡眠1s后继续执行,B线程就绪,B线程执行,A线程执行完phone对象解锁
:::
image.png
image.png
image.png

第四种情况

:::info
结果:1s后打电话打印,4s后发短信打印
分析:A线程和B线程是不同对象调用方法,所以不是同一把对象锁
流程:main线程执行,A线程就绪,A线程执行,synchronized对phone1对象加锁,A线程睡眠4s,同时main线程睡眠1s后继续执行,B线程就绪,B线程执行,synchronized对phone2对象加锁,B线程执行完phone2对象解锁,A线程执行完phone1对象解锁
:::
image.png
image.png
image.png

synchronized 类锁

第五种情况

:::info
结果:4s后发短信打印,打电话打印
分析:A线程和B线程是同一个对象调用方法,且同步方法是静态方法,所以是同一把类锁
流程:main线程执行,A线程就绪,A线程执行,synchronized对Phone3类对象加锁,A线程睡眠4s,同时main线程睡眠1s后继续执行,B线程就绪等待Phone3类对象解锁,A线程执行完Phone3类对象解锁,B线程执行
:::
image.png
image.png
image.png

第六种情况

:::info
结果:4s后发短信打印,打电话打印
分析:A线程和B线程是不同对象调用方法,但调用的同步方法是静态方法,所以是同一把类锁
流程:main线程执行,A线程就绪,A线程执行,synchronized对Phone3类对象加锁,A线程睡眠4s,同时main线程睡眠1s后继续执行,B线程就绪等待Phone3类对象解锁,A线程执行完Phone3类对象解锁,B线程执行
:::
image.png
image.png
image.png

第七种情况

:::info
结果:1s后打电话打印,4s后发短信打印
分析:A线程和B线程是同一对象调用方法,但A线程调用的是静态同步方法,是类锁,B线程调用的是同步方法,是对象锁,所以不是同一把锁
流程:main线程执行,A线程就绪,A线程执行,synchronized对Phone4类对象加锁,A线程睡眠4s,同时main线程睡眠1s后继续执行,B线程就绪,B线程执行,synchronized对phone对象加锁,B线程执行完phone对象解锁,A线程执行完Phone4类对象解锁
:::
image.png
image.png
image.png

第八种情况

:::info
结果:1s后打电话打印,4s后发短信打印
分析:A线程和B线程是不同对象调用方法,且A线程调用的是静态同步方法,是类锁,B线程调用的是同步方法,是对象锁,所以不是同一把锁
流程:main线程执行,A线程就绪,A线程执行,synchronized对Phone4类对象加锁,A线程睡眠4s,同时main线程睡眠1s后继续执行,B线程就绪,B线程执行,synchronized对phone2对象加锁,B线程执行完phone2对象解锁,A线程执行完Phone4类对象解锁
:::
image.png
image.png
image.png

标签:八锁,main,synchronized,对象,解锁,现象,线程,030,执行
From: https://www.cnblogs.com/wl3pb/p/16893921.html

相关文章

  • GB2312、GB18030、GBK、UNICODE、B…
    1, 常用字符集分类ASCII及其扩展字符集作用:表语英语及西欧语言。位数:ASCII是用7位表示的,能表示128个字符;其扩展使用8位表示,表示256个字符。范围:ASCII从00到7F,扩展从00到FF。......
  • [A202211110303]
    [A202211110303](2022,同济大学)已知\(\{a_n\}\)是一个实数列,\(0<|\lambda|<1\).证明:\(\displaystyle\lim_{n\rightarrow\infty}a_n=a\)的充要条件是\[\lim_{n\rig......
  • 703001 TXT 22G101-3图集的简介
    22G101-3图集的全称:混凝土结构施工图平面整体表示方法制图规则和构造详图(独立基础、条形基础、筏形基础、桩基础)本图集制图规则适用于各种现浇混凝土的独立基础、条形......
  • GC0309 CMOS图像传感器
    GC0309 CMOS图像传感器......
  • 注册IRP_MJ_SHUTDOWN事件 基于ReactOS0303
      系统关闭时,会向注册SHUTDOWN事件的设备驱动发送IRP_MJ_SHUTDOWN事件。NTSTATUSSTDCALLNtShutdownSystem(INSHUTDOWN_ACTIONAction){if(Action>ShutdownPowe......
  • 升级node最新版本18.x .Error: error:0308010C
    Buildingforproduction...Error:error:0308010C:digitalenveloperoutines::unsupported先执行以下命令:windows:setNODE_OPTIONS=--openssl-legacy-providerlinux......
  • Error: error:0308010C:digital envelope routines::unsupported
    原因:node.js版本问题,nodev17+版本中的OpenSSL3.0对允许算法和密钥大小增加了严格的限制。 解决办法:方法一(本人测试无效):Windows,命令行输入如下内容setNODE_OPTION......
  • 闲言碎语--1030
    积累要多,重点要少,洋洋洒洒一本书,就算能读下来的,可能也抓不住重点.但是太精炼了,有的人可能又读不懂,所以,积累要多,有丰富的经验,抽象要少,比如一堂......
  • 再用国产操作系统deepin出现拖影现象
    问题如题,使用deepin系统后发现不论是网页的拖动、滑动都会出现明显拖影现象,最神奇的是使用爱奇艺的客户端播放器时同样出现拖影现象。  不过这个拖影现象截图还体现不......
  • 1030 完美数列(二分查找法)
    题目: 给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列。 现在给定参数 p 和一些正整数,请你从中选择尽可能......