Synchronized、Volatile

非 volatile修饰:


线程私有.png

volatile 修饰后强制从主内存读取写入和读取数据:


读取公共内存.png

volatile 修饰的变量具有线程可见性,但是不支持原子性。比如多个线程同时使得某个int 变量++, int++是非原子操作,会造成++结果不确定。
1)从内存取出 i 的值。2)计算 i 的值。3)将 i 的值写到内存中。

你可能感兴趣的:(Synchronized、Volatile)