volatile

Volatile 作用:
1.内存可见性
2.禁止指令重排序

JVM的内存可见性概念模型
重排序的概念

并发编程的三大特性
1.原子性
2.可见性
3.有序性

volat不能保证原子性

i++复合操作

volatile底层实现机制

volatile的应用:标记变量、单例模式(双重检查锁)——->为什么这样写?