the journey is the reward...

          常用鏈接

          統(tǒng)計(jì)

          最新評論

          Singleton設(shè)計(jì)模式,需要雙重檢查嗎?

          Singleton設(shè)計(jì)模式,雙重檢查樣列如下:

        1. public class Singleton   
        2. {   
        3.     private static final Singleton singleton = null;   
        4.   
        5.     private Singleton()   
        6.     {   
        7.     }   
        8.     public static Singleton getInstance()   
        9.     {   
        10.         if (singleton== null)   
        11.         {   
        12.             synchronized (Singleton.class)   
        13.             {   
        14.                 if (singleton== null)   
        15.                 {   
        16.                     singleton= new Singleton();   
        17.                 }   
        18.             }   
        19.         }   
        20.         return singleton;   
        21.     }   
        22. }  
        23.  

          簡單樣列1:

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

           

          雙重檢查很通用,但是它引以為傲的是性能的優(yōu)化(在getInstance被很多很多次調(diào)用的情況下).

          呵呵,我就直接說結(jié)論了:在性能上最優(yōu)的是 簡單樣列1 [當(dāng)然也是在getInstance被很多很多次調(diào)用的情況下].

          簡單樣列1是非惰性加載,所以有人要反駁說 如果我不用到Singleton 的實(shí)例豈不是白占了內(nèi)存.

          所以你選擇 簡單樣列1 還是 雙重檢查 是要根據(jù)你的實(shí)際情況的,如果在程序中對單列類引用的頻率是很高的,那么應(yīng)該選擇 簡單樣列1,反之 雙重檢查.

           

           

           

          posted on 2010-03-03 21:13 adapterofcoms 閱讀(367) 評論(1)  編輯  收藏 所屬分類: java bbs

          評論

          # re: Singleton設(shè)計(jì)模式,需要雙重檢查嗎? 2010-03-25 18:12 xylz

          雙重檢查除了延遲加載外最大的好處在于,如果構(gòu)造函數(shù)出現(xiàn)了異常,在下次訪問時(shí)可能被正確初始化,而靜態(tài)域意味著一旦初始化失敗將永遠(yuǎn)得不到實(shí)例對象。  回復(fù)  更多評論   

          主站蜘蛛池模板: 衡阳市| 太原市| 洛浦县| 随州市| 远安县| 济源市| 金秀| 微山县| 渝北区| 衡水市| 峨眉山市| 安平县| 古交市| 海宁市| 全椒县| 万盛区| 新安县| 略阳县| 湖南省| 安阳市| 诸暨市| 井陉县| 五大连池市| 德保县| 安阳县| 右玉县| 新竹县| 攀枝花市| 东明县| 英吉沙县| 应用必备| 晴隆县| 宝清县| 虞城县| 徐水县| 郸城县| 师宗县| 延长县| 成安县| 万安县| 安化县|