volatile
1.是java虚拟机提供的轻量级同步机制------有三大特性:保证可见性,不保证原子性,禁止指令重排(有序)
2.JMM(java内存模型):---三大特性:可见性,原子性,有序性


3.volatile为什么不能保证原子性?:
因为拿值和put进内存值的过程 class里面执行代码不止一行 ,当写回内存的时候, 有些线程已经写回内存了 就存在了写覆盖
4.如何保证原子性?:
*加sync
*使用带原子包装的整型类
理解指令重排:

4.你在哪些地方用到过volatile?
*单例模式DCL代码 (Double Check Lock 双端检测模式)

![]()
*juc里面底层源码大规模使用了
本文探讨了Java volatile的关键特性,包括其对可见性的保证、为何不提供原子性以及指令重排的概念。重点介绍了如何通过synchronized和原子类型确保原子性,并举例说明在单例模式和并发工具库中的应用。
853

被折叠的 条评论
为什么被折叠?



