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

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

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

    單實例模式學習筆記


    1. 經典的單實例模式例子(非線程安全):
    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
    }
    本例是最經典的單實例模式例子,但是在多線程的情況下就會產生多個實例!

    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,會讓該方法是線程安全的,但是會引起每個線程在調用該方法時的等待,如果getInstance的性能對應用程序不是很關鍵(記住,同步方法可能會使getInstance方法得運行效率降低100倍),本方法是最好得方法!
    3. 提前實例化,不適用延遲實例化(使用于創建和運行時負擔不太繁重或者應用程序總是創建并使用單件實例),它是線程安全得:
    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在加載這個類時候馬上創建此唯一實例,JVM保證在任何線程訪問它之前,一定先創建它!
    4. 在java1.5及以后的版本,增加了volatile關鍵字,可以采用雙重檢查加鎖!
    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關鍵字確保:當unigueInstance變量在被初始化成實例時,多個線程能夠正確的處理它!(對于關注性能的程序,這種做法可以大大減少時耗)



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


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


    網站導航:
     
    <2008年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    常用鏈接

    留言簿(2)

    隨筆分類(31)

    隨筆檔案(30)

    文章分類(32)

    文章檔案(33)

    相冊

    PHP小站-首頁

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲黄片手机免费观看| 亚洲人成电影网站色www| 亚洲综合av永久无码精品一区二区| 国产精品极品美女免费观看| 一本久久综合亚洲鲁鲁五月天| 4338×亚洲全国最大色成网站| 国产亚洲欧洲精品| 亚洲中文字幕无码一去台湾| 黄页网址在线免费观看| 成人网站免费看黄A站视频| 7723日本高清完整版免费| 午夜亚洲av永久无码精品| 日韩在线一区二区三区免费视频| 亚欧免费视频一区二区三区| 亚洲黄片毛片在线观看| 在线综合亚洲欧洲综合网站| 精品成人免费自拍视频| 国产一级大片免费看| 综合自拍亚洲综合图不卡区| 男男gay做爽爽免费视频| 在线看片v免费观看视频777| 国产人成亚洲第一网站在线播放| 免费看a级黄色片| 亚洲精品白色在线发布| AAAAA级少妇高潮大片免费看| 日韩成全视频观看免费观看高清| 亚洲人成影院在线| 农村寡妇一级毛片免费看视频| 91嫩草国产在线观看免费| 无码久久精品国产亚洲Av影片| 免费在线观看一区| 亚洲精品国产字幕久久不卡| 亚洲视频免费在线看| 亚洲αv在线精品糸列| 中国精品一级毛片免费播放| 亚洲国产一区视频| 57pao一国产成视频永久免费 | 免费无码又爽又刺激聊天APP| 亚洲AV一宅男色影视| 免费看黄视频网站| 亚洲日本成本人观看|