美文网首页
Day 22 JMM 与三大特性

Day 22 JMM 与三大特性

作者: 小周爱吃瓜 | 来源:发表于2022-04-02 23:06 被阅读0次

JMM
java memory model.

原子性,可见性,有序性。

cpu会存在高速缓冲区,分配于每个线程内部的私有区域,但是都会写回到主内存中。

原子性:

Screen Shot 2022-04-02 at 10.16.58 PM.png

一个i++操作是分好几个步骤的,会先拷贝到线程内部,然后运算,写回到主存中。

可加性:

volative,内存屏障,lock,final修饰域都能保证其可见性。

有序性:
cpu为了高速执行,会多线程的去执行这些指令,会保证最终结果的一致性.
指令重排序不会影响单个线程的执行,但是会影响到并发执行的正确性。

Screen Shot 2022-04-02 at 10.21.21 PM.png

比如dcl,A,B并发执行,A将instance赋值 ,但是B还是拿到空的Instance,又会去赋值.

Screen Shot 2022-04-02 at 10.19.38 PM.png

JMM模型:

Screen Shot 2022-04-02 at 10.24.18 PM.png

java p -c 可以看到Lock前缀指令。
前缀指令执行期间会锁住总线,防止指令重排序,确保读在写之后,刷新store buffer会导致cache副本失效.

JVM层面:

以上是基于理论的:
那么实际 是硬件层面做了支持.

内存屏障有2个能力

  1. 防止指令重排序
  2. 刷新处理器缓存

相关文章

  • Day 22 JMM 与三大特性

    JMMjava memory model. 原子性,可见性,有序性。 cpu会存在高速缓冲区,分配于每个线程内部的...

  • volatile

    参考 JVM内存结构 VS Java内存模型 VS Java对象模型三者是不同的概念 JMM JMM JMM与物理...

  • 2021-12-共读22

    Day22晓婧打卡 阅读内容 149-158 一句话总结: 尊重孩子的独立性,独特性,与孩子平等,用心地交流。 几...

  • Java线程 - Synchronized、Volatile

    Synchronized特性 原子性 可见性 JMM关于synchronized的两条规定: 线程解锁前,必须把共...

  • 多线程下指令重排与DCL单列模式

    指令重排简述 1、JMM内存模型三大特性包括原子性,可见性,有序性。详细请看关于Java内存模型的三大特性 2、指...

  • Java 并发、多线程、锁

    JMM(Java 内存模型) 主内存与工作内存JMM规定JVM有主内存(Main Memory)和工作内存(Wor...

  • JMM简介

    Java Memory Model(JMM)java内存模型,区别与java内存结构。JMM定义了一套在多线程读写...

  • JMM与valotile

    参考链接: https://www.cnblogs.com/dolphin0520/p/3920373.html ...

  • JMM与volatile

    JMM模型 image.png 八大原子操作 image.png(1)lock(锁定):作用于主内存的变量,把一个...

  • java并发三大特性

    并发编程中两大核心:JMM抽象内存模型以及happens-before规则、三大特性(原子性、有序性、可见性) 一...

网友评论

      本文标题:Day 22 JMM 与三大特性

      本文链接:https://www.haomeiwen.com/subject/lrfajrtx.html