posts - 73,  comments - 55,  trackbacks - 0
          確保一個(gè)特定的類只有一個(gè)對(duì)象被實(shí)例化。

          Singleton:用于單線程應(yīng)用程序

          public class Singleton {

            private Singleton(){}

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

            private static Singleton instance = new Singleton();

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

          Double-Checked Locking:用于多線程應(yīng)用程序

          public class Singleton {

            private static Singleton instance = null;

            public static synchronized Singleton getInstance() {

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

          }



          Double-Checked Locking在java實(shí)際上無(wú)法得到預(yù)期的效果,不能保證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 保爾任 閱讀(612) 評(píng)論(0)  編輯  收藏 所屬分類: Design Patten

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 杭锦后旗| 淅川县| 哈密市| 长乐市| 筠连县| 奉节县| 资中县| 孟村| 峡江县| 梁山县| 饶河县| 南部县| 大连市| 全州县| 穆棱市| 屏山县| 祥云县| 临潭县| 额敏县| 宁城县| 鄯善县| 西乡县| 河池市| 灌南县| 柯坪县| 澄江县| 鹤壁市| 新晃| 遂平县| 绥中县| 高台县| 胶州市| 沙雅县| 沈丘县| 伊宁县| 建昌县| 唐河县| 应城市| 青神县| 乃东县| 宝鸡市|