volatile能保证long&double类型变量操作的原子性
来源:互联网 发布:美工助理的基本要求 编辑:程序博客网 时间:2024/05/16 13:58
这个命题是正确的,但是也不是必须的。
该命题的存在是Java内存模型要求lock, unlock, read, load, assign, use, write这个8个操作都具有原子性,但是同时又对64位的数据类型(long&double)给了一个相对宽松的规定,就是允许虚拟机将没有被volatile参数修饰的64位数据类型的读写划分为两次32位的操作来进行,即允许虚拟机将load, store, read, write这个4个操作实现为非原子的。
既然如此为何又是非必须的呢?JSR对于商用的JVM,强烈建议将这个四个操作实现为原子操作,而且目前各平台下的商用JVM几乎都将其实现为了原子操作。因此我们再编写代码的时候没有必要把用到的long,double专门修饰为volatile变量。
参考: 《深入理解Java虚拟机》
阅读全文
0 0
- volatile能保证long&double类型变量操作的原子性
- java volatile double、long的原子性
- long和double类型变量的非原子性
- volatile 不能保证变量的原子性的操作
- java中long和double类型操作的非原子性探究
- java中long和double类型操作的非原子性探究
- Java的long、double类型的原子性读取问题
- 为何volatile不能保证原子性操作
- volatile不能保证原子性
- Long与double操作并不是原子的
- java中volatile关键字的用法,它不能保证原子性操作
- 证明32位java对long和double的写操作不是原子性的
- volatile无法保证i++原子性的解决方案
- java中volatile关键字的含义 原子类型变量使用
- 非原子的double和long
- 为什么volatile不能保证原子性
- 为什么volatile不能保证原子性
- volatile不能保证程序执行的原子性以及只能一定程度上保证有序性
- Java编码约定中对下列部分的要求:类、属性、方法、包、文件名、变量、常量、控制结构、语句行、注释
- Java中常用jar包解释
- DHTML技术演示---类似调查问卷的单选框学习
- 20170412-cpp上机作业【复制构造函数】
- ThinkPHP 3.2.x 集成极光推送指北
- volatile能保证long&double类型变量操作的原子性
- mysql创建存储过程
- JSF导航
- yii CDbCriteria数据库操作详解
- Test
- 系统启动出现:Partially written block XXX detected
- js判断多选框只能选8个
- openstack上win7实例
- mysql——stm参数绑定查询