volatile禁止指令重排的原理_警告禁止指令提示颜色顺序

volatile禁止指令重排的原理_警告禁止指令提示颜色顺序Volatile禁止指令重排什么是指令重排?你写的程序,计算机并不是按照你写的那样去执行的。源代码->编译器优化的重排->指令并行可能会重排->内存系统可能会重排->执行处理器在进行指令重排的时候,考虑,数据之间的依赖性!指令重排不会造成影响的例子intx=1;//1inty=2;//2x=x+5;//3y=x*x;//4我们所期望的:1234执行的时候可能会变成21341324但是不可能是4321

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

Volatile禁止指令重排

什么是指令重排?

你写的程序,计算机并不是按照你写的那样去执行的。
源代码 -> 编译器优化的重排 -> 指令并行可能会重排 -> 内存系统可能会重排 -> 执行

处理器在进行指令重排的时候,考虑,数据之间的依赖性!

指令重排 不会造成影响的例子
int x = 1;//1
int y = 2;//2
x = x + 5;//3
y = x * x;//4

我们所期望的: 1234 执行的时候可能会变成 2134 1324 

但是不可能是 4321

指令重排 可能造成影响的例子 : abxy默认值都是0

线程A 线程B
x=a y=b
b=1 a=2

正常的结果: x=0 y=0

线程A 线程B
b=1 a=2
x=a y=b

指令重排导致的异常结果 :x=2 y=2

Volatile 可以避免指令重排

内存屏障 CPU指令 作用:
1.保证特定的操作的执行顺序!
2.保证某些变量的内存可见性(利用这些特性volatile实现了可见性)

在这里插入图片描述

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

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

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


相关推荐

  • gradle下载太慢_苹果6网络慢怎么解决

    gradle下载太慢_苹果6网络慢怎么解决由于网络的原因,有些地方连接下载Gradle没问题,有些地方就不行,所以需要想办法解决先说下载,打开文件gradle-wrapper.properties文件,修改distributionUrl把services.gradle.org改成downloads.gradle-dn.com当然这方法可能有些地方不行,实在不行就上代理吧再说Gradle下载jar包慢,在build.gradle文件的repositories{}内添加上阿里的仓库当然,如果添加了阿里仓库还不行的话只能找其他方

    2025年7月31日
    1
  • 代码保护(一) 几款加壳工具[通俗易懂]

    代码保护(一) 几款加壳工具[通俗易懂]DRMsoftEncryptEXE(有激活成功教程版)加密模式:非绑定模式—-加密后的文件不绑定用户电脑,但用户需要一个开启密码才可以打开绑定模式—-一机一码授权,加密后的文件不同用户电脑需要不同的开启密码无密码模式—-加密后的文件无需要开启密码即可运行,仅对原始文件做加密保护一码通模式—-采用相同秘钥和产品编号加密的不同文件,在同台电脑上只需认证一次特点:可以设置加密…

    2022年6月27日
    71
  • 超尴尬婆婆对儿媳的新婚之夜的指导[通俗易懂]

    超尴尬婆婆对儿媳的新婚之夜的指导[通俗易懂]  婚礼结束当晚回到家,我和老公都精疲力竭了。我长这么大连个生日都没过过,突然被拉上台当了回主角,那叫一个紧张哦。这一辈子都没对这么多人笑这么长时间过,中间不得不跑到洗手间休息休息我可怜的脸部肌肉。 回到家我累得只想睡觉,结果刚洗完澡,婆婆神神秘秘地把我叫到她的房间,说有要事。  我一进去,公公就目不斜视地贴着墙根溜了。 我当时觉得不妙,但也晚了。 婆婆很亲热地拉着我坐在床边。先是絮絮叨叨…

    2022年5月4日
    128
  • FilterDispatcher工作流程和原理「建议收藏」

    FilterDispatcher工作流程和原理「建议收藏」publicvoiddoFilter(ServletRequestreq,ServletResponseres,FilterChainchain)throwsIOException,

    2022年7月2日
    30
  • rs232接口与rs485接口区别_rs485和rj45区别

    rs232接口与rs485接口区别_rs485和rj45区别原文地址:https://www.sohu.com/a/244903033_649673通讯端口都是串口,在以下几个方面有区别:1、通讯距离RS232口最大通讯距离是15米,而RS422/485最大通讯距离是1200米。2、所连接设备个RS232只能连接一个设备,而RS485可以连接多个设备。3、端口的定义RS232是标准接口,为D形9针头,所连接设备的接口的信号定义是一样的,其信号定义如下:而RS422/RS485为非标准接口,一般为15针串行接口(也有使用9针接口的),每

    2022年9月17日
    2
  • COLORREF结构「建议收藏」

    COLORREF结构「建议收藏」1 定义typedef DWORD  COLORREF;即为一个32为长整数2初始化COLORREFcol=RGB(100,200,10);其中用到了RGB,看看他是什么:#defineRGB(r,g,b)         ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))原来也是一个COLORREF,不过是把参数转换

    2025年6月27日
    6

发表回复

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

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