volitile关键字的作用及使用

2022/8/12 23:26:35

本文主要是介绍volitile关键字的作用及使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.作用

1)避免指令重排

举例子:uniqueInstance = new Singleton()

这个操作不是原子操作,步骤为:1.为 uniqueInstance 分配内存空间; 2. 初始化 uniqueInstance; 3. 将 uniqueInstance 指向分配的内存地址

如果指令重排,可能先执行13,再执行2

2)这个变量是共享且不稳定的, 每次使⽤它都到主存中进⾏读取

了解JMM模型,类似于CPU的缓存模型。

2.使用举例

单例模式:

public class Singleton {private volatile static Singleton uniqueInstance;
 private Singleton() {
 }
 public static Singleton getUniqueInstance() {
 //先判断对象是否已经实例过,没有实例化过才进⼊加锁代码
 if (uniqueInstance == null) {
 //类对象加锁
 synchronized (Singleton.class) {
 //对象为空才去创建(懒加载)
 if (uniqueInstance == null) {
 uniqueInstance = new Singleton();//⾮原⼦操作。注意!!!
       }
     }
   }
 return uniqueInstance;
 }
}

 



这篇关于volitile关键字的作用及使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程