the journey is the reward...

          常用鏈接

          統計

          最新評論

          Singleton設計模式,需要雙重檢查嗎?

          Singleton設計模式,雙重檢查樣列如下:

        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; 
           }
          }

           

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

          呵呵,我就直接說結論了:在性能上最優的是 簡單樣列1 [當然也是在getInstance被很多很多次調用的情況下].

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

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

           

           

           

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

          評論

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

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

          主站蜘蛛池模板: 宜兴市| 恭城| 杭锦后旗| 百色市| 揭阳市| 会同县| 五华县| 乾安县| 无棣县| 石泉县| 望谟县| 历史| 于都县| 仁寿县| 时尚| 九台市| 易门县| 清涧县| 集安市| 镇宁| 礼泉县| 马山县| 余姚市| 沅江市| 海阳市| 通化市| 罗平县| 临邑县| 襄樊市| 维西| 游戏| 界首市| 潼关县| 长海县| 那曲县| 读书| 正镶白旗| 余干县| 大方县| 射阳县| 监利县|