单例模式:
饿汉式单例:类加载的时候就初始化对象,除非系统重启,对象不会改变,所以本身就是安全的。
1.
/** * 单例模式:饿汉 */ public class Singleton { //私有的无参构造方法,避免在外部 NEW 对象 private Singleton(){}; private static Singleton singleton = new Singleton(); //公有的获取实例的方法 public static Singleton newInstance(){ return singleton; } }
2.
/** * 单例模式:饿汉 */ public class Singleton1 { private Singleton1(){}; private static Singleton1 single = null; static { single = new Singleton1(); } public Singleton1 newInsdance(){ return single; } }
懒汉式单例:延迟加载,可能会有安全问题,也就是出现多个实例。须用同步锁。
/** * 单例模式:懒汉 */ public class Singleton2 { private Singleton2() {}; private static Singleton2 single = null; public static Singleton2 newInstance() { //是否为空,空则进入 if (single == null) { //上锁 synchronized (Singleton2.class) { //再次检索,如果为空,则创建 if (single == null) { single = new Singleton2(); } } } return single; } }