Volatile简介

Volatile

Volatile是什么

Java虚拟机提供的轻量级的同步机制,特性:

  1. 保证可见性。
  2. 禁止指令排序。
  3. 不保证原子性。(例:i++,解决原子性,JUC下的Atomic…,底层原理CAS、Unsafe类)
可见性

涉及到了JMM(Java内存模型),是一种抽象的概念,是一种规范,通过这种规范定义了程序中各个变量(包括实例字段、静态字段和构成数组对象的元素)的访问方式。

JMM的三大特性:原子性、可见性、有序性(编译器和处理器会进行指令重排)。

有序性:单线程环境里边确保程序最终执行结果和代码顺序执行的结果一致。处理器在进行重排序时必须要考虑指令间的数据依赖性。

同步规定:

  1. 线程解锁前,必须把共享变量立刻刷回主内存。
  2. 线程加锁前,必须读取主内存中的最新值到工作内存中。
  3. 加锁解锁是同一把锁。

内存屏障

单例模式:DCL


Volatile简介
http://www.muzili.ren/2022/06/11/Volatile/
作者
jievhaha
发布于
2022年6月11日
许可协议