Java教程

单例设计模式 - 《Head First 设计模式》

本文主要是介绍单例设计模式 - 《Head First 设计模式》,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

单例设计模式:确保一类只有一个实例,并提供一个全局访问点。

应用场景: 线程池、缓存、日志对象、注册表设置等

多线程下同步全局实例获取的方法

public class Singleton{
  private static Singleton singleton = null;
  private Singleton(){}
 // synchronized修饰该方法虽然让各个线程互斥的访问此方法解决多线程下线程不安全的问题但是来带来了性能上的问题
 // 真正需要同步的只有第一次创建实例的时候
  private static synchronized Singleton getInstance(){  
      singleton = new Singleton();
      return singleton;
  }
}

多线程下懒加载模式的优化

双重检查锁的单例模式,首先检查实例是否创建如果未创建,才进行同步,这样一来只有真正创建单例的时候才会进行同步操作。

public class Singleton{
  private volatile static Singleton singleton = null; // volatile关键字的作用 1.保证变量可见性  2.保证变量有序性
  private Singleton(){}
  private static Singleton getInstance(){
      if(singleton == null){ // 第一次判空,检查实例是否存在如果不存在再进入同步块
          synchronized(Singleton.class){
                if(singleton == null){  // 第二次判空,检查实例是否存在,如果仍然为null,则创建实例
                    singleton = new Singleton();
                }
          }
      }
      return Singleton;
  }
}
这篇关于单例设计模式 - 《Head First 设计模式》的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!