浅析轻量级锁

article/2025/6/29 15:10:21

从轻量级锁 来看锁机制。


(目前 上的唯一一张图。= =。 因为有些东西没有图的话 是很难理清楚的 - - )

对象是否被某个线程的锁定的依据是, 对象头中记录的信息。 mark word 也叫对象标志词。对象头的信息内容是变化的,变化后是根据不同的锁标志位来描述对应的信息。

比如当对象头未锁定时候 存储的是对象哈希码和分代年龄。锁标志位为01 。而锁被占用时候存储的指向锁记录的指针以及锁标志位。
synchronized关键字在jdk版本更迭过程中不断被优化,对象的加锁过程不再是直接加最原始的重量级锁,而是先从偏向锁开始, 会升级为轻量级锁,最终变成重量级锁。  这里只总结一下轻量级锁的。

轻量级锁的加锁:
1. 当进入同步代码块的时候 如果该对象未被锁定,即标志位是01 。那么就会为当前线程的栈帧中建立一个  lock record 锁记录空间,其实就是markword的拷贝
2. 然后 执行cas操作,也就是将markword与栈帧中锁记录比对 如果比对成功则立刻把markword更新为指向锁记录的指针,这整个过程都是cas操作。 就表示该线程拥有了对象锁。将标志位转变为00
这里,假设多个线程同时这么做,由于是原子操作,那么肯定仅有一个线程能实现更新markword的值为指向锁记录指针的操作。其他线程cas 肯定就会失败, 因为 markword的值已经变了。
3. 如果更新操作失败了,会检查对象markword 是否指向当前线程的栈帧,如果是的话说明已经拥有了该锁,如果不是的话,则是其他线程 持有的该对象锁。

这个流程有个问题

http://chatgpt.dhexx.cn/article/x3ffC2Cp.shtml

相关文章

14种轻量级网络综述 — 主干网络篇

点击上方“3D视觉工坊”,选择“星标” 干货第一时间送达 作者丨VincentLee 来源丨晓飞的算法工程笔记 编辑丨极市平台 导读 早期的卷积神经很少考虑参数量和计算量的问题,由此轻量级网络诞生,其旨在保持模型精度基础上近一步减少模型参数量和…

神经网络学习小记录47——ShuffleNetV2模型的复现详解

神经网络学习小记录47——ShuffleNetV2模型的复现详解 学习前言什么是ShuffleNetV2ShuffleNetV21、所用模块2、网络整体结构 网络实现代码 学习前言 据说ShuffleNetV2比Mobilenet还要厉害,我决定好好学一下。 什么是ShuffleNetV2 这篇是ECCV2018关于轻量级模型的…

一个简单的dos命令实现无限弹窗,卡死电脑

教大家一个简单的dos命令实现无限弹窗,从而实现卡死电脑。 1.新建一个文本文件 2.在该文件里面输入 : start start cmd goto start 3.保存后并把此文件的.txt后缀改为.bat 提示:如果你的计算机不显示后缀拓展名,首先应先让显示拓展名再进行操…

Pycharm制作搞怪弹窗(声音强制最大,屏幕亮度强制最亮,按钮躲避,弹窗炸弹)

Pycharm制作搞怪弹窗(声音强制最大,屏幕亮度强制最亮,按钮躲避,弹窗炸弹) 闲来无聊用python制作了一个搞怪的桌面弹窗程序,惊喜连连哦 运行动图 实现代码: import tkinter as tk import tkinter.font as…

Charles抓包出现弹窗问题或者无法抓包https问题汇总

一、重要问题总结 1、https抓包需要在电脑端和移动端都装上相应的证书!不同的电脑、手机需要的证书可能不一样,如果不能正常工作,建议重新安装。 2、iOS10及以上系统,需要在安装charles证书后 在设置->通用->关于本机->…

python制作恶搞_Pycharm制作搞怪弹窗的实现代码

闲来无聊用python制作了一个搞怪的桌面弹窗程序,惊喜连连哦 运行动图 实现代码: import tkinter as tk import tkinter.font as tkFont # 引入字体模块 import time import sys import pygame import random import threading import win32api import wmi from tkinter.messa…

用Python写一个假的病毒炸弹(整蛊)

病毒炸弹 现在我们用Python来写一个假的病毒炸弹 弹窗实现 import tkinter as tk import random import threading import timedef boom():window tk.Tk()width window.winfo_screenwidth()height window.winfo_screenheight()a random.randrange(0, width)b random.ra…

bat 炸弹升级

转自:http://digi.163.com/15/0320/06/AL4LP0QD0016192R.html 第1页:什么是批处理炸弹? 最近网上流传一个叫做《大哥别杀我》视频纷纷遭到网友模仿,虽然我们都知道视频里出现的人大多都是群众演员,但还是会被视频中各种…

xss完成浏览器视窗炸弹

无聊,,,发个文章。 这个就是很简单的视窗炸弹,放在自己的 xss平台上,执行就会一直打开页面。初学者可以 试一试。 function WindowBomb() { var iCounter 0 // dummy counter while (true) { window.open(“https:/…

Linux fork炸弹以及预防办法

fork炸弹是什么? fork炸弹以极快的速度创建大量进程(进程数呈以2为底数的指数增长趋势),并以此消耗系统分配予进程的可用空间使进程表饱和,而系统在进程表饱和后就无法运行新程序,除非进程表中的某一进程终…

弹窗炸弹恶搞整人

1.创建一个记事本文件 2.编辑文件内容 在文件中输入以下内容并保存 :start start cmd goto start3.实现弹窗炸弹 把文件扩展名改为.bat。 双击执行(慎用),效果如下: 4.解除无线弹窗的方法 方法一: 新建个记事本…

python弹窗炸弹

当我们看某人不爽时,可以用这个: ​ import tkinter as tk import random import threading import timedef dow():window tk.Tk()window.title(你是SB)window.geometry("200x50" "" str(random.randrange(0, window.winfo_scre…

无限弹窗(bat代码 整人恶作剧)

炸弹弹窗,是使用bat制作的一个小程序,效果就是执行程序后会一直不停地弹出窗口,用来恶作剧。下面我们就来看看详细的教程。 打开文件,输入以下代码: :start start cmd goto start 点击文件,选择另存为 把文…

bat代码雨代码流星_怎么制作无限弹窗效果? 限弹窗代码bat文件分享

炸弹弹屏,也可以叫炸弹弹窗,是可以使用txt制作的一个小程序,效果就是执行程序后会一直不停地弹出窗口,就好像炸弹轰炸一样,如图所示,用来恶作剧很好玩。该怎么制作这个无限弹窗效果呢?下面我们就来看看详细的教程。 1、首先,如图所示,我们打开电脑,在桌面鼠标右键,新…

分享森林火灾年鉴统计平台

https://www.yearbookchina.com 可以参观一下,里面有一部分研究人员能用得上的数据

分享统计数据搜集方法

阿关科研统计篇 将近两个月,在统计年鉴中水深火热。终于,形成一套可供后人快速工作的流程,以供大家参考。点名感恩提供帮助的江红蕾博士的引领和帮助。 第一:明确你想获取的统计数据区域 一般而言,历年《中国统计年…

统计年鉴在哪里查找

一、国家统计局 国家统计局>>年度统计公报 (stats.gov.cn) 二、地方统计局 以江苏为例 江苏省人民政府 江苏统计年鉴 (jiangsu.gov.cn) 三、统计年鉴分享平台 可以直接获取国家以及地方统计年鉴,此网站收录的很全。 上海统计年鉴2001 - 统计年鉴分享平台…

统计年鉴分享平台 - 让科研工作者和学生查找数据更方便

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也…

统计年鉴分享平台,怎么做到免费下载

上海统计年鉴2001 - 统计年鉴分享平台 (yearbookchina.com) 在各个平台分享3次,可以获得110个下载币。