java内存模型: 主内存和工作内存
java内存模型: 定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量操作的底层细节。此处的变量是指实例字段、静态字段和构成数组的对象的元素,不包括局部变量和方法参数,因局部变量和方法参数都是线程私有的,不会共享,自然也不会存在竞争的关系。
每条线程都有独立的工作内存,线程的工作内存中保存了该线程使用到的变量的主内存的副本拷贝,线程对变量的所有操作都必须在工作内存中进行,不能直接操作组内存中的数据,线程间变量值的传递需要通过主内存来完成
volatile、synchronized、final都可以保证数据的可见性。
同步块的可见性是由 “对一个变量执行unlock 操作之前 必须先把此变量同步回主内存中”这一条规则保证的。