Volatile

volatile有三个作用:

  1. volatile变量读写时会增加内存屏障
  2. volatile变量读写时会禁用局部指令重排
  3. 保证对volatile的操作happens-before另一个操作

读屏障,就是在读取volatile变量之前增加一条将变量内容从内存读入CPU缓存的指令;写屏障就是在volatile变量写入之后,将变量的值从CPU缓存写入内存。

指令重排是一种CPU策略,通过交换指令执行的顺序获得最佳性能。