前言
本文隶属于专栏《100个问题搞定Java虚拟机》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
本专栏目录结构和参考文献请见100个问题搞定Java虚拟机
正文
Java内存模型规定了所有的变量都存储在主内存(Main Memory)中。
主内存可以类比成物理硬件的主内存,但此处仅是虚拟机内存的部分
每条线程还有自己的工作内存(Working Memory)。
工作内存可以类比成处理器高速缓存
线程的工作内存中保存了被该线程使用到的变量的主内存副本拷贝, 线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主内存中的变量。
不同的线程之间也无法直接访问对方工作内存中的变量,线程间变量值的传递均需要通过主内存来完成。
可以结合 volatile 的实现原理是什么? 来理解主内存和工作内存