并发有三类问题: 可见性、有序性、原子性,JMM解决前两个问题
在执行程序时,为了提高性能,编译器和处理器常常会对指令做重排序。重排序分3类 型。 1)编译器优化的重排序。编译器在不改变单线程程序语义的前提下,可以重新安排语句的执行顺序。 2)指令级并行的重排序。现代处理器采用了指令级并行技术(Instruction-Level Parallelism,ILP)来将多条指令重叠执行。如果不存在数据依赖性,处理器可以改变语句对应机器指令的执行顺序。 3)内存系统的重排序。由于处理器使用缓存和读/写缓冲区,这使得加载和存储操作看上去可能是在乱序执行
mp.weixin.qq.com/s/k0_flIQWh… 参考java并发编程的艺术第三章
www.imooc.com/article/240… time.geekbang.org/column/arti… www.jianshu.com/p/0b34cec77…