Volatile关键字介绍

简介: Volatile关键字介绍

正文


01 简介


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


02 共享的多处理器架构


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

30.png

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


03 Volatile如何实现的


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

31.png


04 经常使用的地方


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

目录
打赏
0
0
0
0
4
分享
相关文章
一起来探讨volatile关键字
在C语言中,volatile是一个关键字,用于告诉编译器不要对被声明为volatile的变量做优化,以确保每次对该变量的读写都直接操作内存。
关键字: volatile详解
综上所述,`volatile`关键字是Java中实现轻量级同步的一个重要手段,主要用于确保变量的跨线程可见性,但并不保证操作的原子性。在多线程编程的过程中,合理地选择和使用 `volatile`关键字,对于提高程序的正确性和性能都至关重要。
68 0
浅谈Volatile关键字
该篇文章用来总结笔者对于Volatile关键字的理解,并不会太过深入的探讨。
152 0
浅谈Volatile关键字
C语言关键字详解(五)带你全面了解 volatile 关键字
C语言关键字详解(五)带你全面了解 volatile 关键字
417 0
C语言关键字详解(五)带你全面了解 volatile 关键字
深入理解volatile关键字
深入理解volatile关键字
223 0
深入理解volatile关键字
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等