懒汉式:
//懒汉式单例类.在第一次调用的时候实例化自己 //并发环境下很可能出现多个Singleton实例 public class Singleton { private Singleton() {} private static Singleton single=null; //静态工厂方法 public static Singleton getInstance() { if (single == null) { single = new Singleton(); } return single; } }
饿汉式:
//饿汉式单例类.在类初始化时,已经自行实例化 ,线程安全 public class Singleton1 { private Singleton1() {} private static final Singleton1 single = new Singleton1(); //静态工厂方法 public static Singleton1 getInstance() { return single; } }
双重检查锁定
public class Singleton { private Singleton() {} private static Singleton single=null; public static Singleton getInstance() { if (singleton == null) { synchronized (Singleton.class) { if (singleton == null) { singleton = new Singleton(); } } } return singleton; } }
静态内部类
public class Singleton { private static class LazyHolder { private static final Singleton INSTANCE = new Singleton(); } private Singleton (){} public static final Singleton getInstance() { return LazyHolder.INSTANCE; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)