Java内存模型
Java内存模型
Java内存模型(JMM)抽象了线程和主内存之间的关系,就比如说线程之间的共享变量必须存储在主内存中。
在 JDK1.2 之前,Java 的内存模型实现总是从 主存 (即共享内存)读取变量,是不需要进行特别的注意的。而在当前的 Java 内存模型下,线程可以把变量保存 本地内存 (比如机器的寄存器)中,而不是直接在主存中进行读写。
这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。
- 主内存:所有线程创建的实例对象都存放在主内存中,无论该实例对象是成员变量还是方法中的局部变量。
- 本地内存:每个线程都有一个私有的本地内存来存放共享变量的副本,并且只能访问自己的本地内存。
线程之间若想进行通信,则必须:
- 线程A把本地内存中修改过的共享变量副本的值同步到主内存中;
- 线程B到主内存中去读取相应的共享变量
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Mind Palace!