Java 语言中的 volatile 变量
来源:互联网 发布:知乎 菠萝斑马 编辑:程序博客网 时间:2024/06/05 15:33
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种不适合使用 volatile 变量的情形。
Volatile 变量具有 synchronized 的可见性特性,但是不具备原子特性。这就是说线程能够自动发现 volatile 变量的最新值。Volatile 变量可用于提供线程安全,但是只能应用于非常有限的一组用例:多个变量之间或者某个变量的当前值与修改后值之间没有约束。因此,单独使用 volatile 还不足以实现计数器、互斥锁或任何具有与多个变量相关的不变式(Invariants)的类(例如 “start <=end”)。
正确使用 volatile 变量的条件
对变量的写操作不依赖于当前值。该变量没有包含在具有其他变量的不变式中
阅读全文
0 0
- Java 语言中的 volatile 变量
- java中的Volatile 变量
- java中的Volatile变量
- Java中的Volatile 变量
- 来自大爱的IBM:Java 语言中的 volatile 变量
- Java 语言中的 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 Set
- C语言练习题(7)
- ◆Vjudge◆◇广度优先搜索◇ Eight
- python模块调用时,相对路径问题
- 冒泡排序法C语言代码
- Java 语言中的 volatile 变量
- maven pom.xml随笔
- LeetCode-Easy刷题(11) Maximum Subarray
- Symantec/DigiCer证书认证平台联合升级计划
- SpannableString用法详解
- e的x次方的导数为什么是e^x?lnx的导数为什么是1/x?
- CentOS7.2源码安装Subversion1.9.7【填坑记】
- LeetCode-Easy刷题(12) Length of Last Word
- 纯css svg 改变图片颜色 ios android 小程序