public class Singleton { private volatile static Singleton instance = null;
// 私有化构造方法,使其不能通过new创建实例 private Singleton() { }
// 提供公共创建实例的方法 public static Singleton getInstance() { // 先判断实例是否存在,不存在则进入代码块进行判断 if (instance == null) { synchronized (Singleton.class) { // 再次判断实例是否存在,不存在则创建 if (instance == null) { instance = new Singleton(); } } } return instance; } }
静态初始化器方式
public class Singleton { // 静态内部类,Singleton初始化时,内部类加载,并且只加载一次 public static class InnerSingleton { private static Singleton instance = new Singleton(); }
public static Singleton getInstance() { return InnerSingleton.instance; }