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

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

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

    zhyiwww
    用平實(shí)的筆,記錄編程路上的點(diǎn)點(diǎn)滴滴………
    posts - 536,comments - 394,trackbacks - 0
    老關(guān)者,吾同學(xué)也。哈哈,今天看他的博客,對(duì)單態(tài)模式又有了進(jìn)一步的理解。
    以前使用的單態(tài)模式,也能實(shí)現(xiàn),不過有個(gè)限制,看下面的代碼
    import java.util.*;
    class Singleton
    {
    private static Singleton instance;

    private Singleton()
    {
    }

    public static Singleton getInstance()
    {
    if (instance == null) //1
    instance = new Singleton(); //2
    return instance; //3
    }
    }
    這就是我們常使用的單態(tài)模式。
    現(xiàn)在,我們作一個(gè)假設(shè),如果兩個(gè)線程同時(shí)執(zhí)行此程序,都剛執(zhí)行完1,到2,還沒有之行,停住。
    此時(shí)
    thread1得到的instance是null
    thread2得到的instance也是null
    下面會(huì)如何呢?
    顯然,兩個(gè)線程會(huì)分別創(chuàng)建和初始化一個(gè)new Singleton()對(duì)象。
    那么,我們的單態(tài)還能實(shí)現(xiàn)單態(tài)的功能嗎?不能。
    不過,這是個(gè)特例,只有在多線程程序,同時(shí)兩個(gè)或多個(gè)線程都執(zhí)行到1還沒有執(zhí)行2的時(shí)候才能出現(xiàn)。也就是說,如果沒有實(shí)現(xiàn)方法的同步的話,上面的模式是不能保證生成一個(gè)實(shí)例的。
    如果是在非多線程的程序中就更不會(huì)出現(xiàn)這樣的問題。
    但是,些程序是一個(gè)嚴(yán)密的工作。所以,程序要在任何情況和平臺(tái)下都是正確的。

    希望,通過此文,你也能明白,為什么上面的單態(tài)模式是不安全的,為什么這種實(shí)現(xiàn)方法有生成多個(gè)實(shí)例的可能?
    想更深入的理解,請(qǐng)參考
    http://guanhw.blog.hexun.com/10653016_d.html


    |----------------------------------------------------------------------------------------|
                               版權(quán)聲明  版權(quán)所有 @zhyiwww
                引用請(qǐng)注明來(lái)源 http://m.tkk7.com/zhyiwww   
    |----------------------------------------------------------------------------------------|
    posted on 2008-02-15 13:27 zhyiwww 閱讀(879) 評(píng)論(2)  編輯  收藏 所屬分類: j2ee

    FeedBack:
    # re: 跟老關(guān)學(xué)單態(tài)模式
    2008-02-15 16:44 | honeyjava
    有必要用JCF中的類嗎,不知道你那個(gè)vector干什么用的,很沒意思。單例模式已經(jīng)不能再成熟了,double-check式的已經(jīng)被認(rèn)為是線程不安全的。  回復(fù)  更多評(píng)論
      
    # re: 跟老關(guān)學(xué)單態(tài)模式
    2008-02-18 16:21 | zhyiwww
    @honeyjava
    現(xiàn)在是我修改后的代碼。
    import java.util.*;
    class Singleton
    {
    private static Singleton instance;

    private Singleton()
    {
    }

    public static Singleton getInstance()
    {
    if (instance == null) //1
    instance = new Singleton(); //2
    return instance; //3
    }
    }
    當(dāng)時(shí)就是摘抄的一段代碼,只是為了能說明問題。
    不過,聽了您的說明,我對(duì)此模式有糊涂了。如果說上面的方法也是不安全的,那么哪一種方式是安全的呢?歡迎指導(dǎo)。  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 亚洲日本乱码卡2卡3卡新区| 亚洲综合网站色欲色欲| 亚洲男人电影天堂| 最近中文字幕mv免费高清视频8 | 亚洲av日韩av无码| 国产午夜精品久久久久免费视| 国产亚洲精品看片在线观看 | 久久亚洲sm情趣捆绑调教| 久久国产精品2020免费m3u8| 香蕉视频在线观看亚洲| 久久久久久国产精品免费无码| 亚洲第一页在线视频| 18禁无遮挡无码网站免费| 国产亚洲精品AAAA片APP| 亚洲熟妇少妇任你躁在线观看无码| 一本大道一卡二大卡三卡免费| 亚洲男人av香蕉爽爽爽爽| 成人无码视频97免费| 久久精品国产亚洲夜色AV网站| 2021精品国产品免费观看| xxx毛茸茸的亚洲| 国产精品自在自线免费观看| 一区免费在线观看| 亚洲va久久久噜噜噜久久狠狠| 99在线在线视频免费视频观看| 亚洲一线产区二线产区区| 免费国产成人午夜电影| 免费在线黄色电影| 亚洲人成高清在线播放| 免费很黄很色裸乳在线观看| 久久成人免费电影| 亚洲中文无码永久免费| 国产成人高清亚洲| 色影音免费色资源| 免费视频精品一区二区| 亚洲一区二区中文| 免费v片在线观看品善网| 99久9在线|免费| 免费夜色污私人影院网站电影| 中文字幕亚洲综合久久| 国产无遮挡吃胸膜奶免费看|