volatile原理和使用场景

2021-03-09  本文已影响0人  猿必过

volatile 关键字只能用于修饰变量,无法用于修饰方法。并且 volatile 只能保证可见性,但不能保证操作的原子性。

在具体编程中体现为:volatile 只能保证基本类型以及一般对象的引用赋值是线程安全的。

volatile工作原理

为什么 volatile 只能保证可见性,不能保证原子性呢?这跟它的工作原理有关。

由于在整个过程没有涉及到锁相关的操作,所以无法保证原子性,但是由于实时刷新了主内存中的变量值,因此任何时刻,不同线程总能看到该变量的最新值,保证了可见性。

volatile使用场景

要在多线程中安全的使用 volatile 变量,必须同时满足:

在实际项目中,由于很多情况下都不满意 volatile 的使用条件,所以 volatile 使用的场景并没有 synchronized 广。

本文由猿必过 YBG 发布
禁止未经授权转载,违者依法追究相关法律责任
如需授权可联系:zhuyunhui@yuanbiguo.com

上一篇 下一篇

猜你喜欢

热点阅读