隨筆 - 0, 文章 - 75, 評論 - 0, 引用 - 0
          數據加載中……

          Java單例模式

          第一種:


          定義私有構造函數:


          private Single1(){}


          定義私有對象:


          private static Single1 instance=new
          Single1();


          定義公共靜態方法:


          public static Single1 create(){


          return instance;


          }


          外界只需調用靜態方法,即可獲得該對象:


          Single1 test =
          Single1.create();


          第一種特點:調用塊,不調用也有空間保存對象


          -------------------------------------------


          第二種:(推薦)


          同上,定義私有構造函數:


          private Single2(){}


          定義私有對象,不要 new 出對象!


          private static Single2 instance;


          寫公共靜態方法:


          public synchronized static Single2
          create(){


          init();


          if(instance == null){


          synchronized(Single2.class){
          //這里還需上鎖,因為第一個人進來后,開始等待new對象


          if(instance
          == null) //這時如果第二人也進來了,不能讓第二人也new對象



          instance = new Single2();


          }


          return instance;


          }


          return
          instance;


          }


          public static void init(){} //用來做初始化



          解釋:synchronized關鍵字,代表這個方法加鎖,相當于不管哪一個線程A每次運行到這個方法時,都要檢查有沒有其它正在用這個方法的線程B(或者C
          D等),有的話要等正在使用這個方法的線程B(或者C D)運行完這個方法后再運行此線程A,沒有的話,直接運行它包括兩種用法:synchronized 方法和
          synchronized 塊。


          防止多人訪問卡死


          第二種特點:不在內存中保存對象,第一次創建對象慢

          posted on 2012-04-22 15:13 hantai 閱讀(108) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 雷州市| 周宁县| 信丰县| 大新县| 阳谷县| 绿春县| 柘城县| 讷河市| 民乐县| 庆安县| 扶绥县| 罗平县| 大冶市| 衡阳县| 惠州市| 峨眉山市| 卢龙县| 泊头市| 长海县| 额敏县| 澄江县| 沂南县| 沈丘县| 澎湖县| 延川县| 枣阳市| 阿勒泰市| 崇阳县| 循化| 图木舒克市| 周至县| 固镇县| 三台县| 九龙县| 西青区| 深泽县| 佳木斯市| 厦门市| 叙永县| 喜德县| 成都市|