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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • [Intensive Reading]从AlexNet理解卷积神经网络的一般结构

    [Intensive Reading]从AlexNet理解卷积神经网络的一般结构2012年AlexNet在ImageNet大赛上一举夺魁,开启了深度学习的时代,虽然后来大量比AlexNet更快速更准确的卷积神经网络结构相继出现,但是AlexNet作为开创者依旧有着很多值得学习参考的地方,它为后续的CNN甚至是R-CNN等其他网络都定下了基调,所以下面我们将从AlexNet入手,理解卷积神经网络的一般结构。先给出AlexNet的一些参数和结构图:卷积层:5层全连接层…

    2022年6月16日
  • Navicat Premium 中文版注册码

    Navicat Premium 中文版注册码NAVN-U6QE-6PX7-44K5NAVI-WVK6-ZYW4-LQYUNAVJ-5DOO-FCAA-PHMZ经测试,Nacicat版本是10.0.11(黄色版本)可以使用第一个注册码关注我的技术公众号,每天都有优质技术文章推送。微信扫一扫下方二维码即可关注:…

    2022年9月25日
  • Android DeepLink介绍与使用

    Android DeepLink介绍与使用前段时间公司让调研一下DeepLink,说以后会用到,之前看了很久,并做了个demo,现整理一下,方便以后查阅,如果有幸帮助到其他人就更好了。基本概念DeepLink,又叫deeplinking,中文翻译作深层链接。简单地从用户体验来讲,DeepLink,就是可以让你在手机的浏览器/GoogleSearch上点击搜索的结果,便能直接跳转到已安装的应用中的某一个页面的技术。对于不…

    2022年6月18日
  • Burpsuite Professional安装及使用教程(抓包)

    Burpsuite Professional安装及使用教程(抓包)先从吾爱破解论坛下载工具:https://down.52pojie.cn/Tools/Network_Analyzer/Burp_Suite_Pro_v1.7.37_Loader_Keygen.zip工具运行需要Java环境,请自行安装,此处不赘述。解压完后双击keygen填一下LicenseText(随意),然后点击Run即可启动BurpSuite的主程序将keygen中得到的License复制粘贴到这里然后点击Next点击这个后出现下一个界面点击Copyreques

    2022年6月5日
  • leetcode-7整数反转「建议收藏」

    leetcode-7整数反转「建议收藏」原题链接给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0class Solution {public: int rever

    2022年8月8日
  • GridLayout在API21之前的兼容

    GridLayout在API21之前的兼容问题:GridLayout在API21时引入了android:layout_columnWeight和android:layout_rowWeight来解决平分问题,但是api21前怎么办呢?解决:1.引入兼容包:compile’com.android.support:gridlayout-v7:23.0.0’2.为GridLayout设置权重:app:layout_column…

    2022年6月3日

发表回复

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

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