posts - 73,  comments - 55,  trackbacks - 0
          確保一個特定的類只有一個對象被實例化。

          Singleton:用于單線程應用程序

          public class Singleton {

            private Singleton(){}

            //在自己內部定義自己一個實例,是不是很奇怪?
            //注意這是private 只供內部調用

            private static Singleton instance = new Singleton();

            //這里提供了一個供外部訪問本class的靜態方法,可以直接訪問  
            public static Singleton getInstance() {
              return instance;   
             }
          }

          Double-Checked Locking:用于多線程應用程序

          public class Singleton {

            private static Singleton instance = null;

            public static synchronized Singleton getInstance() {

            //這個方法比上面有所改進,不用每次都進行生成對象,只是第一次     
            //使用時生成實例,提高了效率!
            if (instance==null)
              instance=new Singleton();
            return instance;   }

          }



          Double-Checked Locking在java實際上無法得到預期的效果,不能保證singleton的正確性。
          參考:(英文)
          http://gee.cs.oswego.edu/dl/cpj/jmm.html
          http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html

          ?
          posted on 2006-07-18 10:56 保爾任 閱讀(607) 評論(0)  編輯  收藏 所屬分類: Design Patten

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 鄯善县| 祁东县| 临潭县| 方山县| 九龙县| 临泉县| 宜州市| 太保市| 松桃| 德化县| 舒城县| 海门市| 扬州市| 江西省| 乌兰浩特市| 灵丘县| 环江| 黎平县| 鄄城县| 普陀区| 云南省| 垫江县| 永修县| 班戈县| 阿巴嘎旗| 佛坪县| 上林县| 平邑县| 娱乐| 临桂县| 新源县| 如皋市| 万州区| 杂多县| 白山市| 大田县| 缙云县| 慈利县| 汝阳县| 柘城县| 新龙县|