美文网首页
volatile原理

volatile原理

作者: 摸摸脸上的胡渣 | 来源:发表于2020-02-02 15:41 被阅读0次

语义

不允许在缓存中操作volatile变量,且任何的写操作都会直接作用于内存,并且使得其他缓存行中的缓存失效。

实际作用

禁止指令重排和保持可见性。
不仅作用于被修饰的变量,还作用于当前变量所处的代码上下文。

指令重排

指令重排的概念是,编译器和处理器,会将一些命令的执行顺序进行调整,以达到提高程序执行效率的目的。
但会保证调整顺序的代码执行结果,和未调整顺序且单线程执行状态下结果一致。

汇编实现代码

0x0000000109f8757b: lock cmpxchg %rdi,(%rbx)

汇编代码内存语义

lock的作用同语义
会加一个总线锁,应用MESI协议保证volatile变量的可见性

JVM底层实现原理

最终生成的汇编代码,会使用

lock

命令来实现禁止指令重排的功能。

参考

《java并发编程的艺术》 2.1 P21

相关文章

  • 互联网JAVA面试常问问题(三)

    一、volatile原理和使用场景 volatile 原理 volatile变量进行写操作时,JVM会向处理器发送...

  • volatile学习

    目录:1.volatile是什么2.volatile的作用3.volatile的原理4.volatile与sync...

  • Java并发机制底层实现原理-volatile

    章节目录 volatile的实现原理与应用 1.volatile的实现原理与应用 Java source code...

  • 并发编程艺术-2

    本篇文章主要介绍并发的底层实现原理:volatile , synchronized, 原子操作。 volatile...

  • volatile与synchronized的区别

    一、volatile volatile的原理在java中,被volatile声明的关键字,jvm会在翻译的时候在c...

  • java并发(二):深入分析volatile实现原理

    volatile的原理实现可以看这篇文章,真的是从硬件层面上说明了volatile怎样保证可见性。volatile...

  • JAVA线程安全之volatile

    volatile volatile原理是基于CPU内存屏障(Memory Barrier)指令实现的; 如果一个变...

  • volatile原理

    计算机内存模型 计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由...

  • volatile原理

    通过前面一章我们了解了synchronized是一个重量级的锁,虽然JVM对它做了很多优化,而下面介绍的volat...

  • volatile原理

    语义 不允许在缓存中操作volatile变量,且任何的写操作都会直接作用于内存,并且使得其他缓存行中的缓存失效。 ...

网友评论

      本文标题:volatile原理

      本文链接:https://www.haomeiwen.com/subject/zzjqxhtx.html