谈到 volatile、static 就必须说多线程。多线程
一、一个线程在开始执行的时候,会开启一片本身的工做内存(本身线程私有),同时将主内存中的数据复制到本身 的工做内存,今后读写数据都是本身的工做内存的数据,(我的看法:其中写数据时会同步到主内存,读是读本身的工做内存的数据)线程
二、成员变量被volatile 修饰后,发生改变:每次读取被修饰的变量都是读取主内存中的变量,这样就实现了多线程下的可见性,至关于多个实例面对一个静态变量。内存
三、成员变量被static 修饰后,每一个实例(不是每一个线程,static不是面对线程而是面对实例 )都共享 一个主内存的数据。当多线状况下时,对 该成员的操做依然参照第一、 2 点。 同步