Java 内存模型

  • Java,内存模型,虚拟机,Java虚拟机,内存屏障,多线程编程

Java 语言的设计是一门跨平台的编程语言,所以在 Java 虚拟机的设计上,抽象出了一个和现实硬件相对应的内存模型。

重排序

在 Java 代码编译到最终的执行指令的时候,会经历重排序。简单理解重排序就是让代码更高效的执行,充分考虑多 CPU 核心对提高计算能力的适应性。

Happens-Before原则

如果一个操作执行结果需要对另一个操作可见,那么两个操作之间存在Happens-before关系,这里提到的两个操作既可以在同一个线程里,也可以在不同线程之间。

内存屏障

内存屏障使得屏障指令两边的指令序列不能进行某种类型的重排序。内存屏障分为两种:Load Barrier 和 Store Barrier即读屏障和写屏障。

读屏障:使缓存失效,使下一条指令强制从主存中读取最新的值。 写屏障:使写入缓存的数据立刻同步刷新到主存中,让其他线程可见。

Volatile

当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量值立即刷新到主内存中。 当读一个volatile变量时,JMM会把该线程对应的本地内存设置为无效,直接从主内存中读取共享变量。

简单了解一下,有助于理解多线程编程。

Java 内存模型 http://www.qianshan.tech/java/java内存模型.html

- EOF -

本文链接 https://spacepage.top/archives/2019.09.30-Java内存模型.html,欢迎转载,转载请注明出处。

友情链接
网站统计
  • 网站已运行:217天
  • 文章总数:66 篇