四种单例模式

    xiaoxiao2022-07-02  116

    饥饿模式

    /**  * 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;     } }
    最新回复(0)