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

          Singleton:用于單線程應用程序

          public class Singleton {

            private Singleton(){}

            //在自己內(nèi)部定義自己一個實例,是不是很奇怪?
            //注意這是private 只供內(nèi)部調(diào)用

            private static Singleton instance = new Singleton();

            //這里提供了一個供外部訪問本class的靜態(tài)方法,可以直接訪問  
            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 保爾任 閱讀(606) 評論(0)  編輯  收藏 所屬分類: Design Patten

          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 延津县| 静海县| 如东县| 阜康市| 尼勒克县| 温州市| 邵武市| 松滋市| 黄浦区| 麻城市| 高青县| 建昌县| 富裕县| 昌平区| 遵义市| 沁阳市| 镇宁| 蒲江县| 漠河县| 永川市| 葫芦岛市| 沈丘县| 伊宁县| 铁力市| 夏津县| 易门县| 维西| 丰台区| 五常市| 莱州市| 洛阳市| 那坡县| 琼结县| 古浪县| 科技| 宁强县| 桃源县| 德化县| 无锡市| 台中县| 融水|