Java内存模型(JMM)¶
在Java中,使用的是共享内存并发模型。
对于每一个线程来说,栈都是私有的,而堆是共有的。
也就是说在栈中的变量(局部变量、方法定义参数、异常处理器参数)不会在线程之间共享,也就不会有内存可见性的问题,也不受内存模型的影响。而在堆中的变量是共享的,本文称为共享变量。
所以,内存可见性是针对的**共享变量**。
根据JMM的规定,线程对共享变量的所有操作都必须在自己的本地内存中进行,不能直接从主内存中读取。
JMM通过控制主内存与每个线程的本地内存之间的交互,来提供内存可见性保证。