volatile的特性(三)

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

volatile如何保证可见性

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

case:image.png


运行结果:

image.png

用volatile变量后:

image.png

程序正常退出:

image.png

image.png

总结

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

目录
相关文章
|
1月前
|
缓存 Java 编译器
volatile原理
volatile原理
30 1
|
11月前
|
存储 缓存 Java
volatile的扩展分析(2)——happens-before 与 内存屏障
volatile的扩展分析(2)——happens-before 与 内存屏障
116 0
volatile的扩展分析(2)——happens-before 与 内存屏障
|
11月前
|
存储 缓存 安全
深入学习 volatile 的特性
深入学习 volatile 的特性
129 0
深入学习 volatile 的特性
|
10月前
|
安全 Java 编译器
Volatile关键字的作用和实现原理
Volatile关键字的作用和实现原理
141 0
|
10月前
|
缓存 安全 Java
volatile底层的实现原理:volatile关键字的作用、内存模型、JMM规范和CPU指令
volatile底层的实现原理:volatile关键字的作用、内存模型、JMM规范和CPU指令
130 0
|
11月前
|
缓存 Java 调度
volatile 原理
volatile 原理
|
存储 缓存 安全
volatile特性及实现原理
一个volatile变量自身具有以下三个特性: 1、可见性:即当一个线程修改了声明为volatile变量的值,新值对于其他要读该变量的线程来说是立即可见的。而普通变量是不能做到这一点的,普通变量的值在线程间传递需要通过主内存来完成。 2、有序性:volatile变量的所谓有序性也就是被声明为volatile的变量的临界区代码的执行是有顺序的,即禁止指令重排序。
65 0
|
Java 编译器
【多线程:volatile】可见性
【多线程:volatile】可见性
123 0
|
缓存 自然语言处理 安全
什么时候需要加volatile关键字?它能保证线程安全吗?
什么时候需要加volatile关键字?它能保证线程安全吗?
什么时候需要加volatile关键字?它能保证线程安全吗?
|
缓存 安全 Java
java内存模型之volatile核心原理与应用
java内存模型之volatile核心原理与应用
115 0