單實(shí)例模式(線程安全Java)

多線程安全單例模式實(shí)例一(不使用同步鎖)

代碼中的一個(gè)缺點(diǎn)是該類加載的時(shí)候就會(huì)直接new 一個(gè)靜態(tài)對(duì)象出來,當(dāng)系統(tǒng)中這樣的類較多時(shí),會(huì)使得啟動(dòng)速度變慢 。現(xiàn)在流行的設(shè)計(jì)都是講“延遲加載”,我們可以在第一次使用的時(shí)候才初始化第一個(gè)該類對(duì)象。所以這種適合在小系統(tǒng)。

public class Singleton {
    private static Singleton sin=new Singleton();    ///直接初始化一個(gè)實(shí)例對(duì)象
    private Singleton(){    ///private類型的構(gòu)造函數(shù),保證其他類對(duì)象不能直接new一個(gè)該對(duì)象的實(shí)例
    }
    public static Singleton getSin(){    ///該類唯一的一個(gè)public方法    
        return sin;
    }
}

多線程安全單例模式實(shí)例二(使用同步方法)

代碼中的一次鎖住了一個(gè)方法, 這個(gè)粒度有點(diǎn)大 ,改進(jìn)就是只鎖住其中的new語句就OK。就是所謂的“雙重鎖”機(jī)制。

public class Singleton {  
     private static Singleton instance;  
     private Singleton (){
         
     }   
     public static synchronized Singleton getInstance(){    //對(duì)獲取實(shí)例的方法進(jìn)行同步
       if (instance == null)     
         instance = new Singleton(); 
       return instance;
     }
 }

多線程安全單例模式實(shí)例三(使用雙重同步鎖)

public class Singleton {  
     private static Singleton instance;  
     private Singleton (){
     }   
     public static Singleton getInstance(){    //對(duì)獲取實(shí)例的方法進(jìn)行同步
       if (instance == null){
           synchronized(Singleton.class){
               if (instance == null)
                   instance = new Singleton(); 
           }
       }
       return instance;
     }
 }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 單例模式(SingletonPattern)一般被認(rèn)為是最簡單、最易理解的設(shè)計(jì)模式,也因?yàn)樗暮啙嵰锥?,是?xiàng)目中最...
    成熱了閱讀 4,536評(píng)論 4 34
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,796評(píng)論 11 349
  • Java-Review-Note——4.多線程 標(biāo)簽: JavaStudy PS:本來是分開三篇的,后來想想還是整...
    coder_pig閱讀 1,772評(píng)論 2 17
  • 1.單例模式概述 (1)引言 單例模式是應(yīng)用最廣的模式之一,也是23種設(shè)計(jì)模式中最基本的一個(gè)。本文旨在總結(jié)通過Ja...
    曹豐斌閱讀 3,065評(píng)論 6 47
  • 1995.10.21我出生了,今年今天是2016.4.14。還有六個(gè)多月我就整21歲了。不知道那時(shí)候我還能不能有一...
    我姓張你呢閱讀 228評(píng)論 6 1

友情鏈接更多精彩內(nèi)容