zl程序教程

您现在的位置是:首页 >  后端

当前栏目

第一篇(2):Java内存模型

JAVA内存 模型 第一篇
2023-09-27 14:19:46 时间

前言

上一篇我们介绍了在并发编程里面导致bug的三种问题,可见性问题,原子性问题,有序性问题。针对这三个问题,Java语言提供了Java内存模型(JMM)来解决这三种问题,主要是针对有序性和可见性问题。其本质上就是按需禁用缓存和编译优化。接下来我们就详细的阐述下。

Java内存模型介绍

Java 内存模型是一个很复杂的规范,本质上可以理解为:Java内存模型规范了JVM如何提供按需禁用缓存和编译优化(本质上是指令重排序)的方法。具体来说,这些方法包括:通过volatile,synchronized,final 还有Happen-Before规则来控制。下面我就详细介绍下。
Happen-Before 的本质上表示的意思是,先行发生,本质上表示的意思是 前面的操作产生的结果对后续操作可见。例如:A先行发生于B,那么执行B操作是,A操作产生的数据B操作一定能看到。

程序次序规则

程序次序规则:程序前面对某个变量的修改对后续操作一定是可见的
例如:

 public void writer() {