文章目录
为什么需要JMM
- 为什么需要JMM
- 什么是JMM
- JMM是并发工具类和并发关键字的底层原理
- 关于JMM最重要的三点内容
由于c语言是不存在内存模型的概念的. 因此它的执行是依赖于处理器的, 导致了不同的处理器的处理结果不一样, 也就无法保证并发安全.
因此需要一个标准, 让多线程的运行结果达到可预期的状态. 不会再出现不同的处理器运行的结果不一致的情况.
什么是JMMJMM : Java Memory Model JMM 是一组规范, 需要各个JVM的实现来遵循JMM规范, 以便于开发者利用这些规范, 更方便的开发多线程的程序. 如果没有JMM内存模型来规范, 那么很可能经过了在不同CPU的不同的JVM的不同规则的重排序后, 导致不同的虚拟机上运行的结果不一致, 那是很大的问题.
JMM是并发工具类和并发关键字的底层原理volatile synchronize Lock 等原理都是JMM. 如果没有JMM, 那就需要程序员自己去指定什么时候用内存栅栏(可以简单的理解为: 工作内存与主内存的拷贝与同步.) . 有了JMM规范后, 只需要用同步的工具类和并发相关的关键字就可以开发并发相关的程序了.
关于JMM最重要的三点内容重排序 可见性 原子性 是JMM最主要的体现,也是最重要的内容.