<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    單實例模式學(xué)習(xí)筆記


    1. 經(jīng)典的單實例模式例子(非線程安全):
    public class Singleton {
        private static Singleton uniqueInstance;
     
        // other useful instance variables here
     
        private Singleton() {}
     
        public static Singleton getInstance() {
            if (uniqueInstance == null) {
            uniqueInstance = new Singleton();
         }
             return uniqueInstance;
        }
     
        // other useful methods here
    }
    本例是最經(jīng)典的單實例模式例子,但是在多線程的情況下就會產(chǎn)生多個實例!

    2. 線程安全的例子:
    public class Singleton {
     private static Singleton uniqueInstance;
     
     // other useful instance variables here
     
     private Singleton() {}
     
     public static synchronized Singleton getInstance() {
      if (uniqueInstance == null) {
       uniqueInstance = new Singleton();
      }
      return uniqueInstance;
     }
     
     // other useful methods here
    }
    增加synchronized,會讓該方法是線程安全的,但是會引起每個線程在調(diào)用該方法時的等待,如果getInstance的性能對應(yīng)用程序不是很關(guān)鍵(記住,同步方法可能會使getInstance方法得運行效率降低100倍),本方法是最好得方法!
    3. 提前實例化,不適用延遲實例化(使用于創(chuàng)建和運行時負擔(dān)不太繁重或者應(yīng)用程序總是創(chuàng)建并使用單件實例),它是線程安全得:
    public class Singleton {
        private static Singleton uniqueInstance = new Singleton();

        // other useful instance variables here
     
        private Singleton() {}
     
        public static Singleton getInstance() {
                return uniqueInstance;
        }
     
        // other useful methods here
    }
    采用這種方法,我們依賴JVM在加載這個類時候馬上創(chuàng)建此唯一實例,JVM保證在任何線程訪問它之前,一定先創(chuàng)建它!
    4. 在java1.5及以后的版本,增加了volatile關(guān)鍵字,可以采用雙重檢查加鎖!
    public class Singleton {
     private volatile static Singleton uniqueInstance;
     
     private Singleton() {}
     
     public static Singleton getInstance() {
      if (uniqueInstance == null) {
       synchronized (Singleton.class) {
        if (uniqueInstance == null) {
         uniqueInstance = new Singleton();
        }
       }
      }
      return uniqueInstance;
     }
    }
    volatile關(guān)鍵字確保:當(dāng)unigueInstance變量在被初始化成實例時,多個線程能夠正確的處理它!(對于關(guān)注性能的程序,這種做法可以大大減少時耗)



    posted on 2008-05-04 08:38 扭轉(zhuǎn)乾坤 閱讀(667) 評論(0)  編輯  收藏 所屬分類: 設(shè)計模式


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    <2008年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(2)

    隨筆分類(31)

    隨筆檔案(30)

    文章分類(32)

    文章檔案(33)

    相冊

    PHP小站-首頁

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费看大黄高清网站视频在线| 在线观看免费播放av片| 动漫黄网站免费永久在线观看| 亚洲天堂男人天堂| 亚洲精品视频免费在线观看| 亚洲欧洲国产视频| 日本一区二区三区免费高清| 亚洲乱码无人区卡1卡2卡3| 国产无遮挡色视频免费视频| 免费一级毛suv好看的国产网站 | 黄网站色视频免费看无下截| 国产精品免费一级在线观看| 大片免费观看92在线视频线视频| 亚洲一区二区三区影院 | 免费一区二区三区在线视频| 亚洲国产成人久久笫一页| 国产性生大片免费观看性| 亚洲va在线va天堂va四虎 | 国产成人无码区免费网站| 亚洲首页在线观看| 四虎成人免费网站在线| 色www免费视频| 亚洲av永久无码精品网站| 中文字幕无码视频手机免费看| 久久精品国产亚洲av瑜伽| 亚洲精品无码久久久影院相关影片| 2020因为爱你带字幕免费观看全集| 亚洲人片在线观看天堂无码| 国产精品亚洲美女久久久| 日韩精品无码一区二区三区免费| 亚洲日本VA午夜在线影院| 中国亚洲女人69内射少妇| 99久久国产热无码精品免费| 美女被暴羞羞免费视频| 亚洲黄色网站视频| 日本免费一区尤物| 亚在线观看免费视频入口| 日本系列1页亚洲系列| 亚洲成人动漫在线| 全部免费毛片免费播放| 8x网站免费入口在线观看|