單例模式的幾種寫法

一、餓漢式

特性:立即創(chuàng)建 線程安全 沒有延遲加載

    public class Single {
        private static Single instance=new Single();
        private Single(){}
        public static Single getInstance(){
             return instance;   
        }
   }

二、懶漢式

特性:延遲創(chuàng)建,線程不安全

    public class Single {
    private static Single instance;
    private Single(){}
    public static Single getInstance(){
        if(instance==null){
            instance=new Single();
        }
        return instance;    
    }
    }

三、加鎖的懶漢式

特性:延遲創(chuàng)建 線程安全 同步情況下效率低

    public class Single {
    private static Single instance;
    private Single(){}
    public synchronized static Single getInstance(){
        if(instance==null){
            instance=new Single();
        }
        return instance;        
    }
    }

四、雙重驗證式懶漢式

特性:延遲創(chuàng)建 線程安全 同步情況下效率高

    public class Single {
    private static Single instance;
    private Single(){}
    public static Single getInstance(){
        if(instance==null){
            synchronized (Single.class) {
                if (instance==null) {
                    instance=new Single();
                }
            }
        }
        return instance;        
    }
    }

五、類加載方式

特性:延遲創(chuàng)建 線程安全 同步情況下效率高

    public class Single {
    private Single(){}
    private static class ClassHolder{
        private static Single instance=new Single();
    }
    public static Single getInstance(){
        return ClassHolder.instance;        
    }
    }

六、枚舉方式

特性:原生防止反射和反序列化擊穿

    public enum Single{
        INSTANCE;
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1.餓漢private static Singleton instance=new Singleton();或pr...
    藍灰_q閱讀 942評論 0 0
  • 第一種(懶漢式,線程不安全):public class Singleton {private static Sin...
    yljava閱讀 4,073評論 0 0
  • 單例模式要點 私有的構造方法 指向實例的私有靜態(tài)引用 獲取實例對象的公有靜態(tài)方法 餓漢模式(非線程安全) 懶漢模式...
    sunxiaohang閱讀 873評論 1 8
  • 單例模式(SingletonPattern)一般被認為是最簡單、最易理解的設計模式,也因為它的簡潔易懂,是項目中最...
    成熱了閱讀 4,532評論 4 34
  • 最近雨水盈盈,愈發(fā)慵懶,若有所思。不念朝陽,不貪晌午,只想曬曬太陽,做做白日夢。想必多進行“光合作用”,估摸著也...
    白沐流云閱讀 1,102評論 0 48

友情鏈接更多精彩內容