隨筆 - 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 閱讀(106) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 康乐县| 运城市| 长春市| 民乐县| 永兴县| 临朐县| 呼和浩特市| 东城区| 咸丰县| 通河县| 华安县| 轮台县| 吴江市| 永和县| 隆化县| 确山县| 石屏县| 广东省| 义马市| 抚松县| 锡林郭勒盟| 呼玛县| 克东县| 苗栗县| 灵宝市| 伊金霍洛旗| 南和县| 惠州市| 巨野县| 金华市| 改则县| 江源县| 八宿县| 繁峙县| 新安县| 永昌县| 甘泉县| 周至县| 行唐县| 慈溪市| 永州市|