锁的内存语义

news/2024/10/18 14:23:05/

锁的释放和获取的内存语义

操作锁的释放和获取的内存语义类比volatile对锁释放和锁获取的内存语义做个总结
当线程释放锁时JMM会把该线程对应的本地内存中的共享变量刷新到主内存中锁释放与 volatile写 有相同的内存语义线程A释放一个锁,实质上是线程A向接下来将要获取这个锁的某个线程发出了(线程A对共享变量所做修改的)消息。
当线程获取锁时JMM会把该线程对应的本地内存置为无效。从而使得被监视器保护的临界区代码必须从主内存中读取共享变量锁获取与 volatile读 有相同的内存语义线程B获取一个锁,实质上是线程B接收了之前某个线程发出的(在释放这个锁之前对共享变量所做修改的)消息
线程A释放锁,随后线程B获取这个锁,这个过程实质上是线程A通过主内存向线程B发送消息

Java线程间通信的4种方式

Java线程间通信的4种方式
1)A线程写volatile变量,随后B线程读这个volatile变量。
2)A线程写volatile变量,随后B线程用CAS更新这个volatile变量。
3)A线程用CAS更新一个volatile变量,随后B线程用CAS更新这个volatile变量。
4)A线程用CAS更新一个volatile变量,随后B线程读这个volatile变量。

http://www.ppmy.cn/news/86532.html

相关文章

CSS3煎制荷包蛋动画特效,优质男士表白必备

你有多久没吃过早餐了?你是否每天忙碌到很晚,结果导致早上起来也很晚,匆匆忙忙来不及吃早餐,更别说自己做了。一直到现在,你有多久没有吃到过母亲做的早饭了?我们在外奔波,希望家人安康&#xf…

指导实验心得5篇实用技巧

指导实验心得1 我觉得化工原理实验是一门验证性课程,它把我们在化工原理学到的各种单元操作化为实实在在的东西,而让我们把学到的知识认识到它的实在性。流体输送——离心泵、过滤——板框压滤机、对流传热——套管式换热器、吸收蒸馏——填料塔板式塔、…

笔记python

python中类型的表示 strint(input()) # 表示str为int类型 str_typetype(str) print(str_type)题解 | #十六进制数字的大小# 发表于 2022-08-28 14:42 num16 input() num10 int(num16,16) print(num10) 特意查了一下int()的用法: int() 方…

档案馆空气质量在线3D监控系统温湿度方案

档案馆库房八防温湿度空气质量一体化解决方案 档案库房是档案事业发展的基石,其主要任务是集中保管国家机构及个人等在各种形式下形成的具有一定价值和保存价值的各种载体档案,主要包括文书档案、科技档案、会计档案、人事档案、实物档案等。随着我国经济…

JUC并发编程与源码分析笔记-目录

视频学习地址:尚硅谷JUC并发编程,感谢阳哥,投币支持,不过学到后面,前面的好多又忘了,还是学的不够深刻哇! JUC并发编程与源码分析笔记01-本课程前置知识及要求说明 JUC并发编程与源码分析笔记…

【华为OD机试】欢乐的周末【2023 B卷|200分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 小华和小为是很要好的朋友,他们约定周末一起吃饭。 通过手机交流,他们在地图上选择了多个聚餐地点(由于自然地形等原因,部分聚餐地点不可达), 求小华和小为都能到达的聚餐地点有多…

PAT A1100 Mars Numbers

1100 Mars Numbers 分数 20 作者 CHEN, Yue 单位 浙江大学 People on Mars count their numbers with base 13: Zero on Earth is called "tret" on Mars.The numbers 1 to 12 on Earth is called "jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov…

Baumer工业相机堡盟相机如何通过OpenCV直接使用图像数据进行图像显示(C++)

Baumer工业相机堡盟相机如何通过OpenCV直接使用图像数据进行图像显示(C) Baumer工业相机Baumer工业相机SDK联合OpenCV的技术背景代码分析1.引用合适的类文件2.在回调函数里OpenCV直接使用图像数据进行图像显示 工业相机图像通过OpenCV转为Mat图像的优点工…