Volatile关键字介绍

简介: Volatile关键字介绍

正文


01 简介


在没有必要的同步的情况下,编译时、运行时,处理器可以进行各种优化。尽管这些优化在大多数情况下都是有益的,但有时它们也会导致一些奇怪的问题。缓存和重排序是在并发环境中可能会让我们特别的优化之一。Java和JVM提供了许多控制内存顺序的方法,其中的volatile关键字就是之一。


02 共享的多处理器架构


CPU负责执行程序指令。因此,他们需要从RAM中检索程序指令和所需的数据。由于cpu每秒能够执行大量的指令,从RAM获取对它们来说并不理想。为了改善这种情况,处理器正在使用乱序执行、分支预测、推测执行等技巧,当然还有缓存。

30.png

随着不同的内核执行更多的指令和操作更多的数据,它们用更多相关的数据和指令填充缓存。这将以引入缓存一致性问题为代价来提系统的高总体性能。


03 Volatile如何实现的


在一个代码程序中,这个关键字的实际作用是:内存可见性以及禁止指令重排序。但是它无法实现原子性。原理采用的是缓存一致性协议、内存屏障以及happes before规则实现的。

31.png


04 经常使用的地方


多线程并发以及 DCL 单例模式中,经常会用到这个关键字。并且在使用长类型时候也最好用它来进行修饰,例如:Long、Double等类型。

相关文章
|
8月前
|
缓存 编译器
volatile关键字
volatile关键字
|
8月前
|
缓存 编译器 C语言
一起来探讨volatile关键字
在C语言中,volatile是一个关键字,用于告诉编译器不要对被声明为volatile的变量做优化,以确保每次对该变量的读写都直接操作内存。
|
缓存 安全 Java
【volatile关键字】
【volatile关键字】
|
存储 缓存 Java
volatile 关键字说明
volatile 关键字说明
63 0
|
5月前
|
存储 Java 编译器
|
5月前
|
缓存 Java 编译器
关键字: volatile详解
综上所述,`volatile`关键字是Java中实现轻量级同步的一个重要手段,主要用于确保变量的跨线程可见性,但并不保证操作的原子性。在多线程编程的过程中,合理地选择和使用 `volatile`关键字,对于提高程序的正确性和性能都至关重要。
55 0
|
存储 Java
浅谈Volatile关键字
该篇文章用来总结笔者对于Volatile关键字的理解,并不会太过深入的探讨。
146 0
浅谈Volatile关键字
|
存储 缓存 Java
volatile关键字再理解
volatile关键字再理解
volatile关键字再理解
|
SQL 缓存 安全
深入理解volatile关键字
深入理解volatile关键字
205 0
深入理解volatile关键字
|
缓存 前端开发 Java
volatile关键字有什么用?
volatile关键字有什么用?
volatile关键字有什么用?