volatile的特性(三)

简介: volatile的特性:1.保证原子性2.没有原子性3.指令禁止重排

volatile如何保证可见性

可见性:保证不同的线程对某个变量完成操作后结果及时可见,也就是完成操作后刷入主内存。

case:image.png


运行结果:

image.png

用volatile变量后:

image.png

程序正常退出:

image.png

image.png

总结

不加volatile,没有可见性,程序无法停止,加了volatile后,程序有可见性,程序正常退出。

目录
相关文章
|
8月前
|
缓存 Java 编译器
volatile原理
volatile原理
63 1
|
8月前
|
存储 安全 Java
【亮剑】Java并发编程涉及`ThreadLocal`、`Volatile`、`Synchronized`和`Atomic`四个关键机制
【4月更文挑战第30天】Java并发编程涉及`ThreadLocal`、`Volatile`、`Synchronized`和`Atomic`四个关键机制。`ThreadLocal`为每个线程提供独立变量副本;`Volatile`确保变量可见性,但不保证原子性;`Synchronized`实现同步锁,保证单线程执行;`Atomic`类利用CAS实现无锁并发控制。理解其原理有助于编写高效线程安全代码。根据业务场景选择合适机制至关重要。
53 0
|
存储 缓存 Java
volatile的扩展分析(2)——happens-before 与 内存屏障
volatile的扩展分析(2)——happens-before 与 内存屏障
378 0
volatile的扩展分析(2)——happens-before 与 内存屏障
|
存储 缓存 安全
深入学习 volatile 的特性
深入学习 volatile 的特性
208 0
深入学习 volatile 的特性
|
缓存 安全 Java
volatile底层的实现原理:volatile关键字的作用、内存模型、JMM规范和CPU指令
volatile底层的实现原理:volatile关键字的作用、内存模型、JMM规范和CPU指令
171 0
|
缓存 Java 调度
volatile 原理
volatile 原理
|
存储 缓存 安全
volatile特性及实现原理
一个volatile变量自身具有以下三个特性: 1、可见性:即当一个线程修改了声明为volatile变量的值,新值对于其他要读该变量的线程来说是立即可见的。而普通变量是不能做到这一点的,普通变量的值在线程间传递需要通过主内存来完成。 2、有序性:volatile变量的所谓有序性也就是被声明为volatile的变量的临界区代码的执行是有顺序的,即禁止指令重排序。
100 0
|
Java 编译器
【多线程:volatile】可见性
【多线程:volatile】可见性
148 0
|
缓存 安全 Java
java内存模型之volatile核心原理与应用
java内存模型之volatile核心原理与应用
140 0
|
安全 Java 编译器
volatile 的作用和原理
volatile 的作用和原理
167 0
volatile 的作用和原理