Java线程:volatile关键字
Java 线程 volatile 关键字详解 Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。volatile 变量的同步性较差,但它有时更简单并且开销更低。volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。 volatile 变量具有 synchronized 的可见性特性,但是不具备原子特性。这就是说线程能够自动发现 volatile 变量的最新值。volatile 变量可用于提供线程安全,但是只能应用于非常有限的一组用例:多个变量之间或者某个变量的当前值与修改后值之间没有约束。 正确使用 volatile 变量的条件是:对变量的写操作不依赖于当前值,以及该变量没有包含在具有其他变量的不变式中。在实际应用中,这些条件表明,可以被写入 volatile 变量的这些有效值独立于任何程序的状态,包括变量的当前状态。 volatile 变量的使用场景包括: * 多个变量之间或者某个变量的当前值与修改后值之间没有约束的情况。 * 对变量的写操作不依赖于当前值的情况。 * 该变量没有包含在具有其他变量的不变式中的情况。 在使用 volatile 变量时,需要注意以下几点: * volatile 变量不能用于 final 变量前面,因为 final 型的变量是禁止修改的。 * volatile 变量不能提供原子特性,因此不能用于实现计数器、互斥锁或任何具有与多个变量相关的不变式。 * volatile 变量的使用需要满足两个条件:对变量的写操作不依赖于当前值,以及该变量没有包含在具有其他变量的不变式中。 volatile 变量是一种轻量级的同步机制,可以用于提供线程安全,但是需要满足一定的条件,并且不能用于所有的情况。
剩余12页未读,继续阅读
- 粉丝: 0
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助