博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
volatile变量的第二个语义是禁止指令重 排序优化
阅读量:6533 次
发布时间:2019-06-24

本文共 417 字,大约阅读时间需要 1 分钟。

hot3.png

特别是在 多个CPU的情况下, 并发的时候, 应该优先考虑使用 volatile 关键字。 可以让 程序 按照 代码的 的先后顺序执行。否则可能 后写的代码 先执行。 因为 JVM 会可能会对 代码 的执行进行 重排序,重排序是为了提高程序执行的效率。 可是在并发的时候,就容易出现 一下 问题了。

使用volatile变量的第二个语义是禁止指令重 排序优化, 普通的变量仅仅会保证在该方法的执 行过程中所有依赖赋值结果的地方都能获取到正 确的结果, 而不能保证变量赋值操作的顺序与程序代码中的执行顺序一致。 因为在一个线程的方 法执行过程中无法感知到这点, 这也就是Java内 存模型中描述的所谓的“线程内表现为串行的语 义”(Within-Thread As-If-Serial Semantics) 。

《深入理解JVM虚拟机》

转载于:https://my.oschina.net/u/2419285/blog/1803151

你可能感兴趣的文章
Android通讯录查询篇--ContactsContract.Data 二(续)
查看>>
IT人的自我导向型学习:开篇杂谈
查看>>
[原创]BizTalk动手实验系列目录
查看>>
HDU 4611Balls Rearrangement(思维)
查看>>
[LeetCode] Majority Element II
查看>>
minGW, cygwin, GnuWin32【C++的跨平台交叉编译问题】
查看>>
我的Dll(动态链接库)学习笔记(转)
查看>>
应用程序域
查看>>
有向图的拓扑排序算法JAVA实现
查看>>
HTML页面跳转的5种方法
查看>>
李洪强-C语言5-函数
查看>>
开源监控利器grafana
查看>>
Android获取当前时间与星期几
查看>>
jenkins2 multibranch
查看>>
Css定位-定位
查看>>
am335x 电容屏驱动添加。
查看>>
rhel-server-7.2-x86_64无法联网(VMware环境)
查看>>
Nginx配置中的log_format用法梳理(设置详细的日志格式)
查看>>
优化LibreOffice如此简单
查看>>
【Oracle 数据迁移】环境oracle 11gR2,exp无法导出空表的表结构【转载】
查看>>