<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://www.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)論
      
    主站蜘蛛池模板: 亚洲国产精品嫩草影院在线观看| 久99久精品免费视频热77| 国产免费一区二区三区不卡| 免费看国产精品3a黄的视频| 亚洲Av无码精品色午夜 | 真正全免费视频a毛片| 久久久久久免费视频| 亚洲黄色中文字幕| 永久黄网站色视频免费直播| 亚洲乱码一二三四区国产| 91精品国产免费入口| 67pao强力打造67194在线午夜亚洲 | 亚洲一区精品视频在线| 日韩精品无码免费专区网站 | 亚洲av最新在线网址| 成人片黄网站色大片免费观看cn| 日韩激情无码免费毛片| 亚洲色成人四虎在线观看| 免费看国产精品3a黄的视频| 亚洲人6666成人观看| 成全视频免费高清| 另类免费视频一区二区在线观看 | 亚洲高清最新av网站| 免费观看四虎精品成人| 免费人成年轻人电影| 特黄特色大片免费| 亚洲国产人成在线观看| 中文字幕免费在线看线人| 亚洲AV无码一区二区三区在线| 日本免费xxxx色视频| 亚洲一区欧洲一区| 久久亚洲高清观看| www亚洲一级视频com| 国产免费久久精品99久久| 亚洲精品V欧洲精品V日韩精品 | 亚洲一级大黄大色毛片| 一个人看www在线高清免费看| 97久久国产亚洲精品超碰热| 韩国欧洲一级毛片免费| 一级毛片免费不卡| 337P日本欧洲亚洲大胆精品|