volatile关键字需要知道的内容

1.volatile关键字的作用

  1)保证可见性:我称之为保证立即可见性,即不同线程在使用volatile修饰的变量前都会立即获取其最新值,修改后都会立即更新其最新值。

  2)禁止指令重排序:JVM虚拟机允许对变量的创建地址,赋值,指向三个操作进行顺序优化,但是在多线程场景中这样可能会导致错误,volatile禁止虚拟机在运行时进行这种优化。

2.volatile是否是安全的

  不安全,虽然保证可见性保证了变量立即更新,但是对于非原子性的操作,如i++,是不能保证每一步都立即更新的。

3.volatile什么时候是安全的

  只读不写,或者保证只有一个线程写

猜你喜欢

转载自www.cnblogs.com/yunqi0886/p/12408117.html