面试官:说说Volatile底层实现原理?
我们知道 Synchronized 底层是通过监视器 Monitor 实现的,ReentrantLock 底层是通过 AQS 的 CAS 实现的,那 Volatile 的底层是如何实现的?
Volatile与Java内存模型
内存屏障(是一类同步屏障指令,是CPU或编译器在对内存随机访问的操作中的一个同步点,使得此点之前的所有读写操作都执行后才可以开始执行此点之后的操作),避免代码重排序。
面试官:谈谈你对 Volatile 的理解吧
volatile 在指令之间插入内存屏障 + 缓存一致性协议,保证按照特定顺序执行和某些变量的可见性。volatile 通过 内存屏障通知 CPU 和编译器阻止指令重排优化来维持有序性。