Volatile简介
Volatile
Volatile是什么
Java虚拟机提供的轻量级的同步机制,特性:
- 保证可见性。
- 禁止指令排序。
- 不保证原子性。(例:i++,解决原子性,JUC下的Atomic…,底层原理CAS、Unsafe类)
可见性
涉及到了JMM
(Java内存模型),是一种抽象的概念,是一种规范,通过这种规范定义了程序中各个变量(包括实例字段、静态字段和构成数组对象的元素)的访问方式。
JMM的三大特性:原子性、可见性、有序性(编译器和处理器会进行指令重排)。
有序性:单线程环境里边确保程序最终执行结果和代码顺序执行的结果一致。处理器在进行重排序时必须要考虑指令间的数据依赖性。
同步规定:
- 线程解锁前,必须把共享变量立刻刷回主内存。
- 线程加锁前,必须读取主内存中的最新值到工作内存中。
- 加锁解锁是同一把锁。
内存屏障
单例模式:DCL
Volatile简介
http://www.muzili.ren/2022/06/11/Volatile/