java volatile变量
来源:互联网 发布:简易电路图绘制软件 编辑:程序博客网 时间:2024/06/05 17:14
关键字volatile可以说是Java虚拟机提供的最轻量级的同步机制,但是它并不容易完全被正确、完整地理解,所以很多程序员都习惯不去使用它。
当一个变量定义为volatile之后,它将具备两种特性。
1. java保证此变量对所有线程的可见性,这里的“可见性”是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。
关于volatile变量的可见性,经常会被开发人员误解,认为以下描述成立:“volatile变量对所有线程是立即可见的,对volatile变量的所有写操作都能立刻反应到其他线程之中,换句话说,volatile变量在各个线程中是一致的,所以基于volatile变量的运算在并发下是安全的”。这句话的论据部分没有错,但是其论据并不能得出“基于volatile变量的运算在并发下是安全的”这个结论。volatile变量在各个线程的工作内存中不存在一致性问题,但是Java的运算并非原子操作。
2. 使用volatile的第二个语义是禁止指令重排序优化。
参考《深入理解java虚拟机》一书
0 0
- 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变量
- java中Volatile变量
- java volatile:正确使用 Volatile 变量
- Java Volatile 变量的使用
- java-正确使用volatile变量
- java多线程---volatile 变量使用指南
- python解析格式文件
- Nginx系列之常用内置变量
- uva 11584 - Partitioning by Palindromes(简单dp)
- 微信小程序使用三元运算符代替wx:if
- openstack Neutron源码分析(三)------linuxbridge-agent
- java volatile变量
- 【HDU1693】Eat the Trees(插头DP)
- 面试题19:二叉树的镜像
- USACO 2.1 海明码 Hamming Codes
- [LeetCode]67. Add Binary
- 这儿有自学前端开发的吗-
- java线程实战:多线程下载(上)
- 面试题20:顺时针打印矩阵
- 陈寅恪的最后20年 - 笔记