volatile
1.是java虚拟机提供的轻量级同步机制------有三大特性:保证可见性,不保证原子性,禁止指令重排(有序)
2.JMM(java内存模型):---三大特性:可见性,原子性,有序性
3.volatile为什么不能保证原子性?:
因为拿值和put进内存值的过程 class里面执行代码不止一行 ,当写回内存的时候, 有些线程已经写回内存了 就存在了写覆盖
4.如何保证原子性?:
*加sync
*使用带原子包装的整型类
理解指令重排:
4.你在哪些地方用到过volatile?
*单例模式DCL代码 (Double Check Lock 双端检测模式)
*juc里面底层源码大规模使用了