众所周知,处理器的运算速度和存储设备的运算效率相差几个数量级,处理器的运算速度比存储设备的运算效率高得多,为了缓解这种矛盾,Q1引入了高速缓存作为缓冲,但是这样还是有问题,什么问题呢?多个处理器都拥有自己的高速缓存,但它们又共享同一块主存,比如多个处理器操作了主存上的同一块数据,这个时候就有问题了到底谁是对的。这个时候又引入了Q2缓存一致性协议(具体有哪些可自行百度)。Q3处理器乱序执行代码,然后将结果重组保证结果正确性。类似的Java的内存访问方式和硬件的缓存访问操作很类似。相应的java即时编译器也有类似结果从组的指令重排序。
规则:
为了解决内存一致性,Java内存模型定义了8大操作来完成工作内存到主内存以及主内存到工作内存的内存操作:
原文:https://www.cnblogs.com/silencelp/p/14709656.html