问题描述
volatile关键字用过吧。聊聊你对volatile关键字的认识。
知识点整理
- 在系统底层如何禁止指令重排序
通过内存屏障,提供sfence、mfence、lfence等系统源语
- 对于Java中volatile也是通过内存屏障防止指令重排序
- Java代码层面:对变量添加volatile关键字
- 字节码层面:在字段上标记 ACC_VOLATILE
- JVM层面:添加内存屏障
- 具体实现(具体如何添加内存屏障)Hotspot实现:通过C++代码
- 内存屏障有哪些些?
- 解释一个LoadLoad:就是第一读取命令Load对完后才对第二进行读