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

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

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

        明月松間照 清泉石上流


                                            ——— 兵臨城下   貓科動物
    posts - 70, comments - 137, trackbacks - 0, articles - 23
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    singleton的一點疑問

    Posted on 2006-11-29 15:07 兵臨城下 閱讀(441) 評論(7)  編輯  收藏 所屬分類: Java EE
    一般Singleton模式通常有幾種形式:
    第一種形式:

    public class Singleton {

      private Singleton(){}

      private static Singleton instance = new Singleton();

      public static Singleton getInstance() {
        return instance;   
       }
    }

    第二種形式:

    public class Singleton {

      private static Singleton instance = null;
    ?????????
    ????????private Singleton(){}

      public static synchronized Singleton getInstance() {

      if (instance==null)
        instance=new Singleton();
      return instance;   }

    }

    都說第二種形式是lazy initialization,也就是說第一次調用時初始Singleton,不用每次都進行生成對象實例,提高了效率。
    我的疑問是:第一種形式每次通過Singleton.getInstance()就會多次生成實例嗎?instance 不是static的嗎,也只初始化一次啊!
    還有第二種形式中的synchronized 為什么是必須的?不明白,望指點!

    評論

    # re: singleton的一點疑問  回復  更多評論   

    2006-11-29 18:19 by jrobot_堪
    第一種形式也不會生成多個實例的,每次都是返回的類初始化時構造的對象
    第二種形式由于在調用方法時才生成實例并返回,考慮到可能多線程同時訪問這個方法時,可能生成多個實例的情況,必須加synchronized關鍵字讓方法變為同步,這樣同一時間只能一個線程執行這個方法.

    # re: singleton的一點疑問  回復  更多評論   

    2006-11-29 21:56 by 兵臨城下
    哦!線程安全!懂了,那相比而言,第一種形式是比較安全的。
    那第二種形式并不比第一種形式效率高啊,怎么說是提高了效率呢?

    # re: singleton的一點疑問  回復  更多評論   

    2006-11-30 02:59 by jrobot[匿名]
    個人感覺對一般的程序普通的這兩種寫法都是可以的
    至于效率,應該是第一種高些,因為沒有同步,不過也可能會有問題
    這有一篇文章,超詳細的米仔細看- -,你感興趣去研究吧
    http://m.tkk7.com/dreamstone/archive/2006/11/04/79026.aspx

    # re: singleton的一點疑問  回復  更多評論   

    2006-11-30 09:24 by 兵臨城下
    謝了,太復雜了,字節碼分析!
    以后就用第一種形式了!

    # re: singleton的一點疑問  回復  更多評論   

    2006-11-30 18:42 by Zou Ang
    我覺得是因為第一種方式會在類加載的時候就初始化instance,而第二種會在使用時初始化,中間有一段時間不用吧~~

    # re: singleton的一點疑問  回復  更多評論   

    2006-11-30 19:58 by 兵臨城下
    不對吧,這兩個單態類只能通過Singleton.getInstance()來創建對象,所以應該都是調用時才初始化,不存在你所說的情況!

    # re: singleton的一點疑問  回復  更多評論   

    2006-12-10 05:07 by 小賀
    第一種是類加載時生成實例,第二種是調用方法時生成實例,生成實例也要占用內存影響效率,在需要的時候再生成實例,感覺第二種更有效率。
    主站蜘蛛池模板: 韩国18福利视频免费观看| 亚洲国产成人久久综合一| 黄桃AV无码免费一区二区三区| 亚洲春色在线视频| 黄页网站免费观看| 七次郎成人免费线路视频| 亚洲av无码专区国产乱码在线观看 | 亚洲日韩在线中文字幕第一页| 日本不卡免费新一区二区三区| 亚洲三级在线观看| 亚洲午夜国产精品无码| 成人毛片免费网站| 在线观看肉片AV网站免费| 亚洲色丰满少妇高潮18p| 久久综合图区亚洲综合图区| 曰皮全部过程视频免费国产30分钟| 九九热久久免费视频| 一区二区亚洲精品精华液| 久久精品7亚洲午夜a| 国产资源免费观看| 最近中文字幕大全免费视频| 特色特黄a毛片高清免费观看| 亚洲成a人片在线网站| 亚洲中文字幕无码久久精品1| 久久久久免费看黄A片APP| A级毛片高清免费视频在线播放| 亚洲人成色777777老人头| 久久久无码精品亚洲日韩蜜臀浪潮| 免费少妇a级毛片人成网| 青娱乐免费在线视频| 日本免费高清视频| sss日本免费完整版在线观看| 亚洲高清乱码午夜电影网| 亚洲精品国产福利在线观看| 国产亚洲自拍一区| 国产午夜无码视频免费网站| 无码人妻久久一区二区三区免费丨| 美女内射无套日韩免费播放 | 成人人免费夜夜视频观看| 99久在线国内在线播放免费观看| 中文字字幕在线高清免费电影|