查阅地址:http://ifeve.com/java-memory-model-3/
数据竞争
1、当一个
线程写数据的同时,另一个线程在读这个数据,并且没有进行
同步,就会产生数据竞争
2、如果程序正确同步,那么程序执行会具有顺序一致性,它与顺序一致性的执行结果相同
顺序一致性
1、顺序一致性是理想模型
2、无论同步与否,每个操作的执行结果会对后来要执行的操作可见
JMM未同步执行特征
1、
JMM只保证最小的安全性:数据不会无中生有,它会在初始化时清空数据,并初始化为(0,null,false)
2、JMM不保证单线程中的执行是按顺序执行的,可能已经做了重排序
3、JMM不保证每个操作执行结果对后来操作可见
4、
JMM不保证对64位long/double变量写具有原子性,JMM在对long/double进行操作时会分成两个步骤,先写高32位,再写低32位