0%

java | volatile 原理

volatile 的底层实现是内存屏障。

  • volatile 变量的写指令前会加入写屏障
  • volatile 变量的读指令前会加入读屏障

可见性

写屏障

写屏障保证在该屏障之前的,对共享变量的改动,都同步到主存中

读屏障

保证在该屏障之后,对共享变量的读取,加载的是主存的最新数据

有序性

写屏障

写屏障会确保指令重排序时,不会将写屏障之前的代码排在写屏障之后

读屏障

读屏障会确保指令重排序时,不会将读屏障之后的代码排在读屏障之前

请我喝杯咖啡吧~