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

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

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

    再論Singleton模式

    Singleton模式可能是應(yīng)用最廣泛的模式之一了, 但有些錯誤的應(yīng)用。
    ?Singleton的實(shí)現(xiàn): 有兩種方式, 如下:
    1. class Test { public static final Test instance = new Test(); private Test() {} }
    ?2. class Test { private static final Test instance = new Test(); private Test() {} public static Test getInstance() { return instance; } } 這兩種方法都要求構(gòu)造器是私有的, 這樣就可以防止該類外的對象創(chuàng)建新的TEST對象。 但相對而言, 推薦使用第二種方法, 因?yàn)槠涓哂徐`活性,當(dāng)我們改變創(chuàng)建對象的方式的時候, 不需要改動客戶代碼。 第一種方法較第二種有一點(diǎn)完全可以忽略不計的效率的提高。
    ?但應(yīng)避免如下代碼實(shí)現(xiàn)Singleton: class Test { private static Test singleton = null; private Test() {} public Test getSingleton() { if(singleton == null) { singleton = new Test(); } return singleton; } } 因?yàn)閲?yán)格上講, 這并不能完全實(shí)現(xiàn)Singleton模式,而且會導(dǎo)致程序出錯, 這同著名的線程問題--DCL實(shí)效的原理是完全一樣的:
    JVM創(chuàng)建對象的過程可以分為幾個步驟:創(chuàng)建空間, 把所有的變量賦值位默認(rèn)值, 初始化。。。 當(dāng)有兩個線程A和B同事進(jìn)入該方法, A先執(zhí)行, A創(chuàng)建Test實(shí)例的空間, 這時,因?yàn)镃PU的指令流機(jī)制,時間片段正好輪到B線程, 這時B判斷singleton是否為NULL, 因?yàn)锳已經(jīng)為Test的實(shí)例分配了空間, 所以JVM認(rèn)為實(shí)例已經(jīng)創(chuàng)建了, B繼續(xù)執(zhí)行, 更糟糕的是B調(diào)用了singleton, 這時因?yàn)樗]有初始化完全, 所以拋出NullPointerException, 太糟糕了!

    posted on 2006-10-30 14:10 Sheldon Sun 閱讀(188) 評論(0)  編輯  收藏


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


    網(wǎng)站導(dǎo)航:
     
    <2006年10月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(3)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久久久亚洲精品美女| 亚洲伊人久久综合影院| 亚洲免费观看在线视频| 久久99免费视频| 亚洲阿v天堂在线| 叮咚影视在线观看免费完整版| 亚洲色欲久久久综合网东京热 | 亚洲va久久久久| 猫咪社区免费资源在线观看 | 曰曰鲁夜夜免费播放视频| 亚洲精品无码久久毛片波多野吉衣| 桃子视频在线观看高清免费视频| 亚洲精品乱码久久久久久中文字幕| 免费观看男人吊女人视频| 亚洲av鲁丝一区二区三区| 午夜免费福利片观看| 亚洲蜜芽在线精品一区| 波多野结衣免费在线| 亚洲精品日韩一区二区小说| 国产成人aaa在线视频免费观看| 美女无遮挡免费视频网站| 久久亚洲2019中文字幕| 好紧我太爽了视频免费国产| 亚洲男人电影天堂| 成人片黄网站色大片免费| 日韩毛片在线免费观看| 国产A在亚洲线播放| 男人的好免费观看在线视频| 国产亚洲高清在线精品不卡| 国产亚洲人成A在线V网站| 91成人免费观看| 亚洲av成人片在线观看| 色噜噜AV亚洲色一区二区| 国产免费一区二区三区| 无码亚洲成a人在线观看| 亚洲女同成av人片在线观看| 91成人在线免费视频| 污网站在线免费观看| 亚洲精品自在线拍| 亚洲国产高清在线一区二区三区| 久久免费视频精品|