java中Volatile变量
来源:互联网 发布:淘宝账号登陆不了 编辑:程序博客网 时间:2024/06/05 17:13
(1)Volatile 变量具有 synchronized 的可见性特性,但是不具备原子特性。这就是说线程能够自动发现 volatile 变量的最新值
(2)如果读操作远远大于写操作,volatile 变量还可以提供优于锁的性能优势
(3)volatile的作用是: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.
volatile是给编译器的指示来说明对它所修饰的对象不应该执行优化
简单地说就是防止编译器对代码进行优化.比如如下程序:
XBYTE[2]=0x55;XBYTE[2]=0x56;XBYTE[2]=0x57;XBYTE[2]=0x58;
对外部硬件而言,上述四条语句分别表示不同的操作,会产生四种不同的动作,但是编译器却会对上述四条语句进行优化,认为只有XBYTE[2]=0x58(即忽略前三条语句,只产生一条机器代码)。如果键入volatile,则编译器会逐一的进行编译并产生相应的机器代码(产生四条代码)
(4)当第二个操作是volatile写时,不管第一个操作是什么,都不能重排序。这个规则确保volatile写之前的操作不会被编译器重排序到volatile写之后
(5)当第一个操作是volatile读时,不管第二个操作是什么,都不能重排序。这个规则确保volatile读之后的操作不会被编译器重排序到volatile读之前。
(6)当第一个操作是volatile写,第二个操作是volatile读时,不能重排序
阅读全文
1 0
- java中Volatile变量
- Java中Volatile变量小结
- Java中如何使用Volatile变量
- Java中正确使用Volatile变量
- 线程中volatile变量
- C++ 中 volatile 变量.
- java Volatile变量
- Java volatile变量
- Java的volatile变量
- java volatile 变量
- java 里面volatile变量
- Java Volatile变量
- java中的Volatile 变量
- java中的Volatile变量
- Java中的Volatile 变量
- java Volatile 变量
- java volatile变量
- java volatile变量
- 软件工程—软件需求分析
- 3401 数据结构实验之排序四:寻找大富翁
- 分类属性设置-可视化
- quartz之Hello
- redis设置密码和redis主从复制
- java中Volatile变量
- 使用babel深入理解es7的decorator
- 南邮CTF逆向题第二道ReadAsm2解题思路
- Spring事务传播机制-REQUIRES_NEW
- caffe中如何设置某层不参与反向传播
- Socket 长连接与短连接,心跳
- Spring框架 login.jsp跳转index.jsp
- 十三.ARM裸机学习之NandFlash详解
- 如何在linux中安装jdk