隨筆 - 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)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 武邑县| 汉寿县| 若尔盖县| 东台市| 温宿县| 玛沁县| 翁牛特旗| 交口县| 吉水县| 沙坪坝区| 朝阳市| 新建县| 资源县| 新津县| 府谷县| 凤山市| 班戈县| 多伦县| 大名县| 嘉义县| 六枝特区| 巴塘县| 宁津县| 五寨县| 杭锦后旗| 定襄县| 定日县| 玉山县| 大荔县| 郓城县| 晋中市| 广汉市| 南皮县| 奇台县| 开封县| 渝中区| 朝阳区| 江陵县| 册亨县| 洛川县| 和平区|