当前位置: 首页 > news >正文

JUC之JMM

Java内存模型JMM

在这里插入图片描述
在这里插入图片描述
JMM三大特性:可见性、有序性、原子性
可见性
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
原子性:指一个操作是不可打断的,即多线程的环境下,操作不能被其他线程干扰
有序性
在这里插入图片描述
处理器在进行重排序时,必须要考虑指令之间的数据依赖性。多线程环境中线程交替进行,由于编译器优化重排的存在,两个线程中使用的变量能否保证一致性是无法确定的,结果无法预测。
JMM规范下,多线程对变量的读写过程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
JMM规范下,多线程先行发生原则之happens-before在这里插入图片描述
happens-before的总原则
如果一个操作happens-before另一个操作,那么第一个操作的执行结果将对第二个操作可见,而且第一个操作的执行顺序排在第二个操作之前。
两个操作之间存在happens-before关系,并不意味着一定按照happens-before原则制定的顺序来执行。如果重排序之后的执行结果与按照happens-before关系来执行的结果一致,那么这种重排序并不非法
在这里插入图片描述
happens-before本质是一种可见性
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

  • android metaRTC编译
  • 记录一次大厂面试题
  • Linux:导出环境变量命令export
  • Android7.1 ANR error 弹窗处理
  • 全局Ceph节点宕机处理
  • PDFPlumber解析PDF文本报错:AssertionError: (‘Unhandled’, 6)
  • SpringBoot基础入门
  • fastgpt本地详细部署以及配置
  • Spring boot 集成netty实现websocket通信
  • Android 二维码相关(一)
  • 微信小程序修改placeholder样式
  • Java必须掌握的B树知识点(含面试大厂题含源码)
  • PyTorch搭建LeNet训练集详细实现
  • C语言:内存函数
  • 向ChatGPT高效提问模板
  • Android开源项目规范总结
  • Apache的基本使用
  • eclipse(luna)创建web工程
  • Leetcode 27 Remove Element
  • MySQL主从复制读写分离及奇怪的问题
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 构建工具 - 收藏集 - 掘金
  • 简单数学运算程序(不定期更新)
  • 聊聊directory traversal attack
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 一个完整Java Web项目背后的密码
  • 一文看透浏览器架构
  • 找一份好的前端工作,起点很重要
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (1)(1.13) SiK无线电高级配置(六)
  • (C语言)球球大作战
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)创业家杂志:UCWEB天使第一步
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET Core Web APi类库如何内嵌运行?
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .Net Remoting常用部署结构
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .Net8 Blazor 尝鲜
  • .net下简单快捷的数值高低位切换
  • .Net转前端开发-启航篇,如何定制博客园主题
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [ 网络基础篇 ] MAP 迈普交换机常用命令详解
  • []我的函数库
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [Android Studio] 开发Java 程序
  • [AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试