作用:

  • 对于可见性,Java提供了Volatile关键字来保证可见性和静止指令重排。volatile确保一个线程的修改对其他线程是可见的。当一个共享变量被volatile修饰时,它会保证修改的值会立即被更新到内存中,当有其他线程需要读取的时候,它会从内存中去读取
  • 从实践角度而言,volatile的一个重要作用是和CAS结合,保证了原子性,例如在多线程的情况下数字的原子性问题(AtomicInteger)
  • 还有在设计模式中的单例模式,为保证为单例,使用volatile来修饰Singleton。

单例模式代码:

//懒汉式单例模式
public class Singleton1 {
    private static volatile Singleton1 instance = null;
    private Singleton1(){

    }
    public static Singleton1 getInstance(){
        if (instance == null) {
            synchronized (Singleton1.class) {
                if (instance == null) {
                    instance = new Singleton1();
                }
            }
        }
        return instance;
    }
}
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐