Java内存模型的主要目标:定义程序中各个变量的访问规则。
Java的并发采用的是共享内存模型
Java线程之间的通信由Java内存模型(JMM)控制。JMM决定一个线程对共享变量的写入何时对另一个线程可见。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享变量的副本。线程对变量的所有操作必须在本地内存中完成,而不能直接读取主内存中的变量。不同的线程无法直接访问对方工作内存中的变量,线程间变量的传递均需要通过主内存来完成。
线程A与线程B之间如要通信的话,必须要经历下面2个步骤:
1、首先,线程A把本地内存A中更新过的共享变量刷新到主内存中去。
2、然后,线程B到主内存中去读取线程A之前已更新过的共享变量。