JMM可见性内存模型
JMM
Java内存模型(JMM)定义的是一种抽象的概念,定义屏蔽java程序对不同的操作系统的内存访问差异。
在多线程中为了保证共享变量的可见性:通过Lock(汇编指令)和总线锁/MESI-缓存一致性协议控制。
下图是工作内存和共享主存结构:
Volatile汇编lock指令:
- 将当前处理器缓存行数据立刻写入主内存中。
- 写的操作会触发总线嗅探机制,同步更新主内存的值。
JMM八大同步规范
(1)lock(锁定):作用于 主内存的变量,把一个变量标记为一条线程独占状态
(2)unlock(解锁):作用于 主内存的变量,把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定
(3)read(读取):作用于 主内存的变量,把一个变量值从主内存传输到线程的 工作内存中,以便随后的load动作使用
(4)load(载入):作用于 工作内存的变量,它把read操作从主内存中得到的变量值放入工作内存的变量副本中
(5)use(使用):作用于 工作内存的变量,把工作内存中的一个变量值传递给执行引擎
(6)assign(赋值):作用于 工作内存的变量,它把一个从执行引擎接收到的值赋给工作内存的变量
(7)store(存储):作用于 工作内存的变量,把工作内存中的一个变量的值传送到 主内存中,以便随后的write的操作
(8)write(写入):作用于 工作内存的变量,它把store操作从工作内存中的一个变量的值传送到 主内存的变量中
JMM可见性内存模型相关推荐
- 面试题:请介绍⼀下 JMM(Java 内存模型)
面试题:请介绍⼀下 JMM(Java 内存模型) 关键词 CPU缓存一致性协议(例如MESI),多个CPU核心之间缓存不会出现不同步的问题 Store Buffer.Load Buffer和L1之间却 ...
- JMM Java内存模型的概念以及happens-before原则
详细介绍了JMM Java内存模型的概念.由来,以及happens-before原则的具体规则. Java内存模型(Java Memory Model,JMM)是java虚拟机规范定义的一组规范以及机 ...
- 重点知识学习(8.2)--[JMM(Java内存模型),并发编程的可见性\原子性\有序性,volatile 关键字,保持原子性,CAS思想]
文章目录 1.JMM(Java Memory Model) 2.并发编程的可见性 3.并发编程的有序性 4.并发编程的原子性 5.volatile 关键字 6.保持原子性: 加锁,JUC原子类 加锁 ...
- JVM架构、JVM垃圾回收机制、垃圾回收算法、垃圾回收器、JMM(内存模型)
0 JVM和Java的关系 JDK = JRE + Java开发工具(java,javac,javadoc,javap-) JRE = JVM + Java核心类库 即: JDK = JVM + Ja ...
- java内存模型 原子性_Java内存模型JMM 高并发原子性可见性有序性简介 多线程中篇(十)...
JVM运行时内存结构回顾 在JVM相关的介绍中,有说到JAVA运行时的内存结构,简单回顾下 整体结构如下图所示,大致分为五大块 而对于方法区中的数据,是属于所有线程共享的数据结构 而对于虚拟机栈中数据 ...
- 从底层吃透java内存模型(JMM)、volatile、CAS
前言 随着计算机的飞速发展,cpu从单核到四核,八核.在2020年中国网民数预计将达到11亿人.这些数据都意味着,作为一名java程序员,必须要掌握多线程开发,谈及多线程,绕不开的是对JMM(Java ...
- JMM内存模型详解(一)
本文开始死磕JMM(Java内存模型)由于知识点较多,分来写 该文为JMM第一篇 技术往往是枯燥的,本文文字较多 1. JMM是什么? 其实JMM很好理解,我简单的解释一下,在Java多线程中我们经常 ...
- Java内存模型(JMM的原理和介绍)
Java内存模型之JMM 文章目录 Java内存模型之JMM 一.首先了解计算机硬件存储体系 二.Java内存模型Java Memory Model(JMM) 1. 什么JMM 2. 原则 3. 能干 ...
- Java——聊聊JUC中的Java内存模型(JMM)
文章目录: 1.CPU缓存模型 2.Java内存模型Java Memory Model 3.JMM规范下的三大特性 3.1 原子性 3.2 可见性 3.3 有序性 4.JMM规范下,多线程对变量的读写 ...
最新文章
- Swift3.0和OC桥接方法
- 基于TransformerFusion的单目场景重构
- gradle常用命令
- 别再无聊地吹捧了,一起来动手实现MAE玩玩吧!
- HarmonyOS之常用组件TabList与Tab的功能和使用
- 【Python学习】 - 关于函数返回拷贝还是返回视图的几组函数汇总
- 如果$.ajax函数迟迟得不到响应,那么最有可能出错的地方是请求参数写错了
- java后台生成excel_Java后台生成Excel前台下载
- 忘了微信密码怎么办_微信支付密码怎么改?微信支付密码忘了怎么办?详细教程来了!...
- 语音信号处理基础(一)
- IGS发布RINEX 4.00
- 人类最高质量客户端项目chrome源码下载与编译
- CSR8670项目实战:BlueSiri轻智能蓝牙音箱
- 华为荣耀畅玩7安卓系统升级为鸿蒙系统,华为EMUI系统迎来绝唱!内核升级为鸿蒙,荣耀被彻底放弃?...
- 剖析微商到微伤的全过程
- SC16IS752调试
- java以某个字符串断句_结合 ictclass4j 和 KTDictSeg 写自己的分词器----断句(1)
- 扳倒井酒病毒性营销方案策划
- TikTok代运营丨怎么找到TikTok达人网红?
- 呆在家睡觉,倒不如在家学习
热门文章
- 2020中国高校计算机大赛网络技术挑战赛,中国高校计算机大赛-网络技术挑战赛的新跨越...
- openstack之Horizon
- openwrt 配置WAN 和 LAN
- VMware Horizon View 7 规划部署图解
- 【实时渲染】RTR4 简要问答版
- 使用XXLjob中间件进行定时任务的管理
- 概念结构设计( 实体与属性的划分原则、E-R图的集成)、逻辑结构设计(任务、步骤、转换方法、数据模型的优化、设计用户子模式、物理结构设计)....
- ppt中讲演模式在哪里_滚动讲演的过去和现在
- 你知道这个提高 Java 单元测试效率的 IDEA 插件吗
- 人工智能未来前景怎么样 初学者能学python人工智能吗