java voliate,voliate 的实现原理是什么【面试题详解】「建议收藏」

java voliate,voliate 的实现原理是什么【面试题详解】「建议收藏」今天爱分享给大家带来voliate的实现原理是什么【面试题详解】,希望能够帮助到大家。volatile可以保证线程可见性且禁止指令重排序,但是无法保证原子性。在JVM底层volatile是采用“内存屏障”来实现的,加入volatile关键字时,汇编后会多出一个lock前缀指令。lock前缀指令其实就相当于一个内存屏障。happen-before原则保证了程序的“有序性,对volatile变量的…

大家好,又见面了,我是你们的朋友全栈君。

今天爱分享给大家带来voliate 的实现原理是什么【面试题详解】,希望能够帮助到大家。

volatile可以保证线程可见性且禁止指令重排序,但是无法保证原子性。在JVM底层volatile是采用“内存屏障”来实现的, 加入volatile关键字时,汇编后会多出一个lock前缀指令。lock前缀指令其实就相当于一个内存屏障。

happen-before原则保证了程序的“有序性,对volatile变量的写操作 happen-before 后续的读操作.

当读取一个被volatile修饰的变量时,会直接从共享内存中读,而非线程专属的存储空间中读。

当volatile变量写后,线程中本地内存中共享变量就会置为失效的状态,因此线程B再需要读取从主内存中去读取该变量的最新值。

对该变量的写操作之后,编译器会插入一个写屏障。对该变量的读操作之前,编译器会插入一个读屏障。

线程写入,写屏障会通过类似强迫刷出处理器缓存的方式,让其他线程能够拿到最新数值。

当一个共享变量被volatile修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133168.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ES6 模板字符串方法[通俗易懂]

    ES6 模板字符串方法[通俗易懂]ES5中在JS中写一个模块是这样的:varcontent=’’+’’+title+’’+’’在ES6中可以这样:let这里就直接写不用引号什么的<div>${变量}<div>方便快捷用的是两个烦引号“来包裹模块…

    2022年8月21日
    8
  • 芯片架构–四大处理器架构「建议收藏」

    芯片架构–四大处理器架构「建议收藏」处理器分为复杂指令集计算机(CISC)和精简指令集计算机(RISC)。1、x86架构我们使用的电脑以及公司的服务器,大部分采用了x86架构的处理器,以intel和AMD的处理器为主。x86架构的处理器采用了CISC指令集(复杂指令集计算机),x86架构的CPU分为x86和x86-64两类,目前主流的是x86-64,即64位的处理器。2、ARM架构我们的手机几乎全部使用了ARM架构,采用了RISC指令集(精简指令集),ARM的优势在于低功耗,因此非常适合手机等终端使用,x86架构的处理器无

    2022年9月7日
    2
  • Debug.WriteLine输出调试信息[通俗易懂]

    Debug.WriteLine输出调试信息转载于:https://www.cnblogs.com/xuyuchen/p/8283023.html

    2022年4月10日
    101
  • 利用反射动态调用类成员

    利用反射动态调用类成员

    2021年7月22日
    63
  • long转string java_java中long如何转成String????????

    long转string java_java中long如何转成String????????展开全部longl=Long.parseLong(“String”);longl=Long.parseLong(“String”,int);longl=Long.valueOf(“String”).longValue();Long.ValueOf(“String”)与Long.parseLong(“String”)的区别Long.ValueOf(“String”);返回Long包…

    2022年5月14日
    40
  • Windows系统装机步骤以及常见专用名词汇总(实用)

    Windows系统装机步骤以及常见专用名词汇总(实用)一、装机流程(U盘安装或重装系统)注意:各个型号品牌的操作可能不同,但总体流程基本相同,实操注意查漏补缺。1.安装好主机(CPU,硬盘,内存,散热器,主板,电源,机箱,(显卡或者网卡使用的PCIE接口)),合上机箱。2.准备工作:将电源线(显示器、主机)插好,连接好显示器和主机之间的VGA线,插好键鼠的USB线。3.准备好一个启动U盘(百度“优启通”)。4.插入启动U盘并开启主机(按下电源键),根据电脑自己的装机BIOS快捷键(例如…

    2022年6月25日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号