程序在运行时内存实际的访问顺序和程序代码编写的访问顺序不一定一致,这就是内存乱序访问。内存乱序访问行为出现的理由是为了提升程序运行时的性能。这种内存乱序问题主要是由两种原因引起的:
JSR-1337制定了Java内存模型(Java Memory Model, JMM)中规定的hb原则大致有以下几点:
jmm 对java语义的比较重要的两个扩展是:
Memory Barrier可以被分为以下几种类型:
参考https://www.cnblogs.com/chenyangyao/p/5269622.html可以得知:
volatile的内存屏障策略非常严格保守,保证了线程可见性。