volatile 能使得一个非原子操作变成原子操作吗
可以。使用volatile修饰的变量,线程在每次使用的时候,都会读取变量修改后最后的值。
例如一个典型的例子实在类中有long类型的成员变量。如果该变量被多个线程访问好把该
变量设置 为volatile,为什么,因为java读取long类型的变量,不是原子的,需要分两步
如果一个线程正在修改long变量值,另一个线程可能看到该值的一半(32位),但是对
volatile型的long或double变量的读写是原子。
可以。使用volatile修饰的变量,线程在每次使用的时候,都会读取变量修改后最后的值。
例如一个典型的例子实在类中有long类型的成员变量。如果该变量被多个线程访问好把该
变量设置 为volatile,为什么,因为java读取long类型的变量,不是原子的,需要分两步
如果一个线程正在修改long变量值,另一个线程可能看到该值的一半(32位),但是对
volatile型的long或double变量的读写是原子。