一、定义
java内存模型(java memory model,简称JMM),它定义了多线程之间对共享变量的可见性以及在对共享变量进行操作时如何进行同步。
二、多线程之间通过内存模型进行通信的原理
从上图看出,线程A与线程B之前的通信包括两步
1、线程A将本地内存中修改的共享变量同步到主内存中
2、线程B去主内存中获取共享变量更新后的值
三、JVM 如何实现JMM
1、在JVM中每个线程都有自己的线程栈,对于方法的调用会存在栈中,本地变量存在栈中,对象都存储在堆区
2、
本地变量如果是基础类型存在线程栈中
本地变量如果是引用类型,对象的引用存在线程栈中,对象还是存在堆中,
对象的成员变量无论是基本类型还是引用类型都存在堆中
对象的成员方法,这些方法包括的本地变量都存储在线程栈中
堆中的对象被多线程共享,本地变量每个线程都会拷贝一份到自己的线程栈中