概述 Java存储模型(JMM),安全发布.规约,同步策略等等的安全性得益于JMM,在你理解了为什么这些机制会如此工作后,可以更容易有效地使用它们. 1. 什么是存储模型,要它何用. 如果缺少同步,就会有很多因素会导致线程无法立即,甚至永远无法看到另一个线程的操作所产生的结果: 编译器生成指令的次序,可以不同于源代码书写的顺序,而且编译器还会把变量存储在寄存器,而不是内存中. 处理器可以乱序或者并行地执行指令. 缓存会改变写入提交到主内存的变量的次序. 存储在处理器本地缓存中的值,对于其他处理器…