java volatile关键字
来源:互联网 发布:手机midi键盘软件 编辑:程序博客网 时间:2024/06/01 09:16
volatile关键字是java用来解决可见性和有序性问题的。好多人认为volatilehe和synchronized一样,皆是使修饰的对象在操作的时候具有原子性。其实不然,volatile修饰的变量的单次读/写可以保证原子性。如long,double类型的变量,但是并不能保证i++和++i这种操作的原子性,为什么呢?因为本质上i++/++i是读写两次操作。要想保证操作的原子性可以通过AtomicInteger/Synchronized关键字。
volatile原理
1.可见性在多线程执行过程中,线程本身并不和主内存进行数据交互,而是通过线程的工作内存完成相应操作。这也是导致线程间数据不可见的本质原因。volatile修饰的变量和普通变量的写操作主要有一下区别:{1}volatile修饰的变量在修改后会强制将修改后的值刷新到主内存中。{2}修改volatile修饰的变量后会导致其他线程工作内存中对应的变量值失效。因此再读取该变量值的时候就需要重新从组内存中读取。2.有序性实现3.内存屏障
但是自从jdk1.6之后synchronized的性能做了重大改善,volatile逐渐的退出了历史舞台。
参考:http://www.cnblogs.com/paddix/p/5428507.html
阅读全文
0 0
- java 关键字volatile
- Java中的volatile关键字
- Java中的volatile关键字
- JAVA:volatile关键字
- Volatile 关键字 java
- Java中的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关键字介绍
- LintCode刷题阶段性总结---链表容易篇(翻转链表,删除链表重复元素,合并两个排序链表等)
- keyshot4.0.74破解版下载 附安装方法
- MarkDown语法--插入公式
- 分页和上传图片
- plsql 连接 虚拟机Linux下的Oracle数据库 失败
- java volatile关键字
- null或空值的判断处理-java
- ASP.NET Core MVC四种枚举绑定方式
- ubuntu fwupd占用一个cpu100%解决办法
- RMQ-ST 详细讲解 poj3264为例
- DPMM的理解、公式推导及抽样
- LeetCode
- 【LeetCode】Longest Common Subsequence最长公共子序列(求出某一解+LCS长度)
- 多址接入技术 FDMA TDMA CDMA NOMA