java关键字——volatile - omigaw/spring- GitHub Wiki

1. volatile简介

synchronized 是阻塞式同步,在线程竞争激烈的情况下会升级为重量级锁。而volatile就可以说是Java虚拟机提供的最轻量级的同步机制。针对volatile修饰的变量给Java虚拟机特殊的约定,线程对volatile变量的修改会立刻被其他线程所感知,即不会出现数据脏读的现象,从而保证数据的"可见性"。
`被volatile修饰的变量能够保证每个线程能够获取该变量的最新值,从而避免出现数据脏读的现象。`

2. volatile实现原理

3. 并发分析

 两个核心、三大性质。
 两大核心:JMM内存模型、happens-before
 三大性质:原子性、可见性、有序性

4. volatile的内存语义实现(底层实现)

 JMM在不改变正确语义的前提下,会允许编译器和处理器对指令序列进行重排序,那如果想阻止重排序,答案是添加`内存屏障`。