JMM

Java内存模型(JMM)定义的是一种抽象的概念,定义屏蔽java程序对不同的操作系统的内存访问差异。

在多线程中为了保证共享变量的可见性通过Lock(汇编指令)和总线锁/MESI-缓存一致性协议控制。

下图是工作内存和共享主存结构:

Volatile汇编lock指令:

  1. 将当前处理器缓存行数据立刻写入主内存中。
  2. 写的操作会触发总线嗅探机制同步更新主内存的值。

JMM八大同步规范

(1)lock(锁定):作用于 主内存的变量,把一个变量标记为一条线程独占状态

(2)unlock(解锁):作用于 主内存的变量,把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定

(3)read(读取):作用于 主内存的变量,把一个变量值从主内存传输到线程的 工作内存中,以便随后的load动作使用

(4)load(载入):作用于 工作内存的变量,它把read操作从主内存中得到的变量值放入工作内存的变量副本中

(5)use(使用):作用于 工作内存的变量,把工作内存中的一个变量值传递给执行引擎

(6)assign(赋值):作用于 工作内存的变量,它把一个从执行引擎接收到的值赋给工作内存的变量

(7)store(存储):作用于 工作内存的变量,把工作内存中的一个变量的值传送到 主内存中,以便随后的write的操作

(8)write(写入):作用于 工作内存的变量,它把store操作从工作内存中的一个变量的值传送到 主内存的变量中

JMM可见性内存模型相关推荐

  1. 面试题:请介绍⼀下 JMM(Java 内存模型)

    面试题:请介绍⼀下 JMM(Java 内存模型) 关键词 CPU缓存一致性协议(例如MESI),多个CPU核心之间缓存不会出现不同步的问题 Store Buffer.Load Buffer和L1之间却 ...

  2. JMM Java内存模型的概念以及happens-before原则

    详细介绍了JMM Java内存模型的概念.由来,以及happens-before原则的具体规则. Java内存模型(Java Memory Model,JMM)是java虚拟机规范定义的一组规范以及机 ...

  3. 重点知识学习(8.2)--[JMM(Java内存模型),并发编程的可见性\原子性\有序性,volatile 关键字,保持原子性,CAS思想]

    文章目录 1.JMM(Java Memory Model) 2.并发编程的可见性 3.并发编程的有序性 4.并发编程的原子性 5.volatile 关键字 6.保持原子性: 加锁,JUC原子类 加锁 ...

  4. JVM架构、JVM垃圾回收机制、垃圾回收算法、垃圾回收器、JMM(内存模型)

    0 JVM和Java的关系 JDK = JRE + Java开发工具(java,javac,javadoc,javap-) JRE = JVM + Java核心类库 即: JDK = JVM + Ja ...

  5. java内存模型 原子性_Java内存模型JMM 高并发原子性可见性有序性简介 多线程中篇(十)...

    JVM运行时内存结构回顾 在JVM相关的介绍中,有说到JAVA运行时的内存结构,简单回顾下 整体结构如下图所示,大致分为五大块 而对于方法区中的数据,是属于所有线程共享的数据结构 而对于虚拟机栈中数据 ...

  6. 从底层吃透java内存模型(JMM)、volatile、CAS

    前言 随着计算机的飞速发展,cpu从单核到四核,八核.在2020年中国网民数预计将达到11亿人.这些数据都意味着,作为一名java程序员,必须要掌握多线程开发,谈及多线程,绕不开的是对JMM(Java ...

  7. JMM内存模型详解(一)

    本文开始死磕JMM(Java内存模型)由于知识点较多,分来写 该文为JMM第一篇 技术往往是枯燥的,本文文字较多 1. JMM是什么? 其实JMM很好理解,我简单的解释一下,在Java多线程中我们经常 ...

  8. Java内存模型(JMM的原理和介绍)

    Java内存模型之JMM 文章目录 Java内存模型之JMM 一.首先了解计算机硬件存储体系 二.Java内存模型Java Memory Model(JMM) 1. 什么JMM 2. 原则 3. 能干 ...

  9. Java——聊聊JUC中的Java内存模型(JMM)

    文章目录: 1.CPU缓存模型 2.Java内存模型Java Memory Model 3.JMM规范下的三大特性 3.1 原子性 3.2 可见性 3.3 有序性 4.JMM规范下,多线程对变量的读写 ...

最新文章

  1. Swift3.0和OC桥接方法
  2. 基于TransformerFusion的单目场景重构
  3. gradle常用命令
  4. 别再无聊地吹捧了,一起来动手实现MAE玩玩吧!
  5. HarmonyOS之常用组件TabList与Tab的功能和使用
  6. 【Python学习】 - 关于函数返回拷贝还是返回视图的几组函数汇总
  7. 如果$.ajax函数迟迟得不到响应,那么最有可能出错的地方是请求参数写错了
  8. java后台生成excel_Java后台生成Excel前台下载
  9. 忘了微信密码怎么办_微信支付密码怎么改?微信支付密码忘了怎么办?详细教程来了!...
  10. 语音信号处理基础(一)
  11. IGS发布RINEX 4.00
  12. 人类最高质量客户端项目chrome源码下载与编译
  13. CSR8670项目实战:BlueSiri轻智能蓝牙音箱
  14. 华为荣耀畅玩7安卓系统升级为鸿蒙系统,华为EMUI系统迎来绝唱!内核升级为鸿蒙,荣耀被彻底放弃?...
  15. 剖析微商到微伤的全过程
  16. SC16IS752调试
  17. java以某个字符串断句_结合 ictclass4j 和 KTDictSeg 写自己的分词器----断句(1)
  18. 扳倒井酒病毒性营销方案策划
  19. TikTok代运营丨怎么找到TikTok达人网红?
  20. 呆在家睡觉,倒不如在家学习

热门文章

  1. 2020中国高校计算机大赛网络技术挑战赛,中国高校计算机大赛-网络技术挑战赛的新跨越...
  2. openstack之Horizon
  3. openwrt 配置WAN 和 LAN
  4. VMware Horizon View 7 规划部署图解
  5. 【实时渲染】RTR4 简要问答版
  6. 使用XXLjob中间件进行定时任务的管理
  7. 概念结构设计( 实体与属性的划分原则、E-R图的集成)、逻辑结构设计(任务、步骤、转换方法、数据模型的优化、设计用户子模式、物理结构设计)....
  8. ppt中讲演模式在哪里_滚动讲演的过去和现在
  9. 你知道这个提高 Java 单元测试效率的 IDEA 插件吗
  10. 人工智能未来前景怎么样 初学者能学python人工智能吗