Java内存模型:主要目的是定义程序中各种变量的访问规则。
即关注在Java虚拟机中把变量值存储到内存和从内存中取出变量值这样的底层细节。(这里的变量包括实例字段、静态字段、构成数组对象的元素;因为局部变量与方法参数是线程私有的,不会被共享,就不会存在竞争问题)
Java内存模型规定了所有变量都存储在主内存。
每条线程都有自己的工作内存,线程的工作内存中保存了被该线程使用的变量的主内存副本,线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存数据。不同的线程之间也无法直接访问对方工作内存中的变量,线程间变量值的传递均需要通过主内存来完成。