【JUC】10-Java内存模型JMM

news2024/11/15 6:46:49

1. JMM

  • 通过JMM来实现和主内存之间的抽象关系。
  • 屏蔽各个硬件平台和操作系统的内存访问差异以实现让Java程序在各种平台下都能达到一致的内存访问效果。
    三大特性:
  • 原子性:互斥,同时成功或失败。
  • 有序性:指令重排序后有序。
  • 可见性:当一个线程修改了某一个共享变量的值,其他线程是否能够立即知道该变更,JMM规定了所有变量都存储在主内存中。
      线程拷贝共享变量的副本,进行操作,然后再写入主内存。
      本线程的共享变量是私有的。要进行不同线程之间的数据读取,需要通过主内存进行中转
    在这里插入图片描述

2. 脏读

线程A修改了数据x,但还没有写回主内存,线程B读取了主内存中的x。

3. 多线程读取过程

 JMM控制实现线程修改变量的通知。
在这里插入图片描述

4. 多线程先行发生原则之happens-before

 在JMM中,如果一个操作执行的结果需要对另一个操作可见或者代码重排序,那么这两个操作之间必须存在happens-before(先行发生原则)。逻辑上的先后关系。
总原则:

  • 如果一个操作happens-before另一个操作,那么第一个操作的执行结果将对第二个操作可见,而且第一个操作的执行顺序排在第二个操作之前。
  • 两个操作之间存在happens-before关系,并不意味着一定要按照happens-before原则制定的顺序来执行。如果重排序之后的执行结果与按照happens-before关系来执行的结果一致,那么这种重排序并不非法。
    8条规则:
    1. 次序规则:一个线程内,按照代码顺序,写在前面的操作先行发生于写在后面的操作。
    1. 锁定规则:一个unLock操作先行发生于Lock操作。
    1. volatile变量规则:对一个volatile变量的写操作先行发生于后面对这个变量的读操作。
    1. 传递规则。
    1. 线程启动规则
    1. 线程中断规则
    1. 线程终止规则
    1. 对象终结规则

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2098181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL递归获取商品分类以及所有下级分类商品

现在就是我们有一张商品表,还有一张分类表,商品表有一个字段用来记录当前商品分类id的,然后查询时候因为分类是有层级的,如果我们想通过顶层分类获取到它和所有子类的商品时就会需要用到MySQL的递归查询了。 首先是针对 MySQL 8.…

NCMMSC-CNVSRC 2024视觉语音识别竞赛圆满落幕

8月16日上午,NCMMSC-CNVSRC 2024 学术研讨会在乌鲁木齐召开的第十九届全国人机语音通讯学术会议(NCMMSC 2024)上举行。会上公布了本次视觉语音识别竞赛 CNVSRC 2024 的最终结果,并举行了颁奖仪式。 本次竞赛由 NCMMSC 2024 组委会…

springboot+vue 进销存管理系统

springbootvue 进销存管理系统 相关技术springbootmybatismysqlmavenvueelementui

ANet-1E1S1智能网关:物联网时代的能源计量新纪元,断点续传引领高效运维

在万物互联的物联网时代,数据的精准采集与高效传输成为了推动各行业智能化转型的关键。ANet-1E1S1以其断点续传技术与强大的RS485接口智能通信管理能力,为水、电、气、油等多领域能源管理带来了便捷与效率的提升。基于嵌入式Linux平台的通用型智能通信管…

高经费打造的史诗级视觉盛宴,惊叹于每一帧的奢华

8月29日,备受期待的《指环王:力量之戒》第二季终于上线了。这一季一上架就放出了三集,立刻引发了影迷们的热烈讨论。 自从2022年首季首播以来,《指环王:力量之戒》就一直备受瞩目。尽管首季受到了不少争议,…

【开源大模型生态2】数据、算力、算法,越来越猛!

人工智能(A)的快速发展依赖于三个核心要素:数据,算法,算力。这个观点已经得到了业界的高度认可。只有这三个要素同时满足了才能加速人工智能的大发展。随着人工智能大模型规模变大以及普及应用,人工智能对能源的需求也在不断加大,…

linux文件——文件系统与内存管理——理解打开文件, 写入数据与文件系统的关系

前言:本节课算是一点文件系统的补充内容。 但是说是文件系统的补充内容,其实我们也可以把这篇文章当作linux下的内存管理的文章来看待。 因为博主会从内存管理的角度, 将进程打开文件、写入数据的流程, 以非常底层的角度&#xff…

【C++】汇编分析,函数是如何调用,传参,返回

传参 有的是用寄存器传参,有的用push传参 我在MSVC编译测出来的是PUSH传参(debug模式),具体过程如下 long func(long a, long b, long c, long d,long e, long f, long g, long h) {long sum;sum (a b c d e f g h);ret…

护栏碰撞监测系统的发展前景如何?

​ ​护栏碰撞监测系统的发展前景可谓十分广阔,主要体现在以下几个方面: ​ ​一、交通领域需求持续增长 ​ ​1. 道路建设不断拓展 ​ ​●在全球范围内,公路、高速公路以及城市道路等基础设施持续处于新建与扩建的进程之中。以…

再也不用来回切换了,多微同一界面聚合聊天

手上有多个微信,工作时经常要来回切换登录,才能处理聊天和发圈等工作,来回切换不但容易导致号的状态存在异常,还会浪费很多时间登录,忙的时候还可能会导致处理不及时。 今天必须要给你们分享这个超棒的东西&#xff0…

如何写接口自动化测试断言?

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 你真的会写自动化测试断言吗? 在接口测试中,断言是一项非常重要的操作,它是用来校验接口返回结果是否符合预期的一种手段。…

OLED显示屏详解(IIC协议0.96寸 STM32)

目录 一、介绍 二、模块原理 1.原理图 2.工作原理:SSD1306显存与命令 三、程序设计 main.c文件 oled.h文件 oled.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 OLED是有机发光二极管,又称为有机电激光显示(Organic Electrol…

惊人发现:clickhouse的cpu暴增之谜

点/击/蓝/字 关/注/我/们 一、背景 前段时间,公司的生产环境的clickhouse的cpu突然持续高压,持续时间大约5个小时,特写此文记录,深挖clickhouse的原理,持续学习。 题主所在的公司的一些历史数据会保存到clickhouse中…

基于php的公司员工管理系统—计算机毕业设计源码25190

摘 要 公司公司员工管理系统除了具有共享系统的全部功能以外,能通过对数据的分析对决策做出解释是其主要的新特点。其体系结构,将由专用的服务器/客户方式向广域网发展,使更多的系统间能够互相交流数据,带动整个行业、领域知识和效…

如何解决前端跨域问题:从CORS到JSONP

聚沙成塔每天进步一点点 本文回顾 ⭐ 专栏简介如何解决前端跨域问题:从CORS到JSONP1. 引言2. 什么是跨域问题?2.1 同源策略(Same-Origin Policy)2.2 跨域请求的场景 3. 解决跨域问题的常见方法3.1 使用CORS(Cross-Orig…

实在智能联合案例入选中国信通院2024年度高质量数字化转型案例集

为推动数字化转型相关产业发展,培育数据要素市场,为数字化双方提供行业实践标杆参考,中国信通院铸基计划于2024年4月初启动高质量数字化转型典型案例征集工作,旨在遴选一批具有产业引领与推广应用效应的企业数字化转型典型案例。实…

【MySQL】Explain执行计划(十七)

🚗MySQL学习十七站~ 🚩本文已收录至专栏:MySQL通关路 ❤️每章节附章节思维导图,文末附全文思维导图,感谢各位点赞收藏支持~ ⭐学习汇总贴,超详细思维导图:【MySQL】学习汇总(完整思维导图) 一.…

[python]面向对象示例:学生管理系统

python面向对象 python基础知识整理 主要界面 建议跟着框架自行完成功能需求,最下面有完整带注释版本,学生信息会存到当前目录下data.txt文本中,没有则会自行创建 涉及到的知识点 面向对象列表, 字典for, if, input…文件操作 需求分析 开始 -> 循环调用主程序 ->不…

盲盒小程序开发,探索市场发展优势

随着潮玩市场的火热,盲盒已经成为了一种集娱乐、社交、消费为一体的模式,越来越多的消费者被盲盒所吸引,盲盒市场也迎来了巨大的发展空间,带来了各种商业机遇,同时为创业者提供新的创业渠道。本文将探讨盲盒小程序的开…