多线程专家

深入理解Java内存模型 ch7 总结

2018-12-13  本文已影响117人  王侦

1.处理器内存模型

根据对不同类型读/写操作组合的执行顺序的放松,可以把常见处理器的内存模型划分为下面几种类型:

读写操作的放松是以操作间不存在数据依赖性为前提。



所有处理器内存模型都允许写-读重排序,原因在第一章以说明过:它们都使用了写缓存区,可能导致-读操作重排序。同时,我们可以看到这些处理器内存模型都允许更早读到当前处理器的写,原因同样是因为写缓存区:由于写缓存区仅对当前处理器可见,这个特性导致当前处理可以比其他处理器先看到临时保存在自己的写缓存区中的写。


JMM屏蔽了不同处理器内存模型的差异,它在不同的处理器平台之上为 java程序员呈现了一个致的内存模型 。

2.JMM、处理器内存模型与顺序一致性内存模型之间的关系

3.JMM的设计

设计JMM时,需要考虑的两个关键因素:

JMM对于不改变程序执行结果的重排序不做要求,可以重排序。
例如,如果锁只会被单线程访问,就会被消除。同样,volatile变量只被单线程访问,就会当作一个普通变量来对待。


4.JMM的内存可见性保证

三类程序:

上一篇 下一篇

猜你喜欢

热点阅读