共享模型之内存
- 之前讲的
synchronized
底层Monitor
主要关注的是访问共享变量
时,保证临界区代码的原子性
。下面进一步深入学习共享变量
在多线程间的【可见性】
问题与多条指令执行时的【有序性】
问题
一、 Java 内存模型 (重点
)
- JMM 即
Java Memory Model
,它从Java层面定义了主存
、工作内存
抽象概念,底层对应着CPU 寄存器、缓存、硬件内存、CPU 指令优化等。JMM 体现在以下几个方面原子性
- 保证指令不会受 线程上下文切换的影响可见性
- 保证指令不会受 cpu 缓存的影响(JIT对热点代码的缓存优化)
有序性
- 保证指令不会受 cpu 指令并行优化的影响