用自己的话阐述就是两个作用:
1.volatile修饰的变量,直接读取主存中的值。没有volatile修饰的变量,cpu会将运算需要的数据从主存复制一份到CPU的高速缓存当中,在运行完成后再将修改后的值刷到主存中。
2.禁止指令重排;在Java内存模型中,允许编译器和处理器对指令进行重排序,没有valotile修饰的变量,有可能会被编译器指令重排。
用自己的话阐述就是两个作用:
1.volatile修饰的变量,直接读取主存中的值。没有volatile修饰的变量,cpu会将运算需要的数据从主存复制一份到CPU的高速缓存当中,在运行完成后再将修改后的值刷到主存中。
2.禁止指令重排;在Java内存模型中,允许编译器和处理器对指令进行重排序,没有valotile修饰的变量,有可能会被编译器指令重排。