饥饿模式
/** * Created by zhanghaipeng on 2018/11/9. * 单例模式 懒汉 */ public class Singleton1 { private Singleton1(){} private static Singleton1 instance = null ; //线程不安全 // public static Singleton1 getInstance() { //线程安全 public static synchronized Singleton1 getInstance() { if( null == instance) { instance = new Singleton1(); } return instance; } }懒汉模式
/** * Created by zhanghaipeng on 2018/11/9. * 单例模式 饥饿模式 */ public class Singleton2 { private Singleton2(){} //方法一 // private static Singleton2 instance = new Singleton2(); //方法二 private static Singleton2 instance = null; static{ instance = new Singleton2(); } //线程不安全 // public static Singleton getInstance() { //线程安全 public static synchronized Singleton2 getInstance() { return instance; } }double check
/** * Created by zhanghaipeng on 2018/11/9. * 单例模式 double Check */ public class Singleton4 { private Singleton4(){ instance = new Singleton4(); } private static Singleton4 instance = null; public static Singleton4 getInstance() { if(null == instance){ synchronized (Singleton4.class) { if(null == instance) { instance = new Singleton4(); } } } return instance; } }静态内部类
/** * Created by zhanghaipeng on 2018/11/9. * 单例模式 静态内部类 */ public class Singleton3 { private Singleton3(){} static class Singleton3Holder{ private static final Singleton3 instance = new Singleton3(); }; public static synchronized Singleton3 getInstance() { return Singleton3Holder.instance; } }