一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

一個(gè)單例模式的簡單例子

 麗和書屋 2015-01-29

ex1:

 

public class Singleton    
{    
    private static final Singleton singleton = null;    
   
    private Singleton()    
    {    
    }    
    public static Singleton getInstance()    
    {    
        if (singleton== null)    
        {    
            singleton= new Singleton();    
        }    
        return singleton;    
    }    
}   
 

 

這個(gè)不多說了,肯定是錯(cuò)誤的,如果多個(gè)線程訪問的時(shí)候都死==null,那么接下來就是產(chǎn)生多個(gè)實(shí)例。不算單例模式。

 

ex2:

 

public class Singleton    
{    
    private static final Singleton singleton = null;    
   
    private Singleton()    
    {    
    }    
    public static Singleton getInstance()    
    {    
        if (singleton== null)    
        {    
            synchronized (Singleton.class) {    
                singleton= new Singleton();    
            }    
        }    
        return singleton;    
    }    
}  

這個(gè)雖然加了同步鎖,但是如果多個(gè)線程同步訪問==null,那么還是會(huì)產(chǎn)生多個(gè)實(shí)例,只是產(chǎn)生實(shí)例的時(shí)候同步而已。

 

ex3:

 

 

 public class Singleton    
{    
    private static final Singleton singleton = null;    
   
    private Singleton()    
    {    
    }    
    public static Singleton getInstance()    
    {    
        synchronized (Singleton.class)    
        {    
            if (singleton== null)    
            {    
                singleton= new Singleton();    
            }    
        }    
        return singleton;    
    }    
}  

 

這個(gè)就可以了,但是這個(gè)地方對于每個(gè)訪問的這個(gè)方法都是同步,而最需要的同步只是在new的地方,所以這樣做雖然保證了單例,但是效率有點(diǎn)低哦。

 

ex4:

 

public class Singleton    
{    
    private static final Singleton singleton = null;    
   
    private Singleton()    
    {    
    }    
    public static Singleton getInstance()    
    {    
        if (singleton== null)    
        {    
            synchronized (Singleton.class)    
            {    
                if (singleton== null)    
                {    
                    singleton= new Singleton();    
                }    
            }    
        }    
        return singleton;    
    }    
}  

 

這個(gè)不錯(cuò),保證了單例。這個(gè)叫做double-check 雙重檢查。

 

還有一個(gè)比較簡單的寫法。

 

ex5:

 

public class Singleton    
{    
    private static final Singleton singleton = new Singleton();
   
    private Singleton()    
    {    
    }    
    public static Singleton getInstance()    
    {    
        return singleton;    
    }    
}  

這樣也可以,具體2種差別就不多說了。下面這個(gè)看起來要簡單好多的哈


    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产内射在线激情一区| 台湾综合熟女一区二区| 噜噜中文字幕一区二区| 欧美乱妇日本乱码特黄大片| 国产又粗又猛又大爽又黄同志| 国产高清一区二区不卡| 男人大臿蕉香蕉大视频| 日韩和欧美的一区二区三区| 97人妻精品一区二区三区免| 99久久人妻中文字幕| 男女午夜福利院在线观看| 少妇特黄av一区二区三区| 国产精品亚洲综合色区韩国| 一区二区三区日韩在线| 精品人妻久久一品二品三品| 日本乱论一区二区三区| 五月婷婷六月丁香狠狠| 亚洲妇女黄色三级视频| 国产精品欧美日韩中文字幕| 亚洲国产精品一区二区| 五月的丁香婷婷综合网| 久久久免费精品人妻一区二区三区| 特黄大片性高水多欧美一级 | 亚洲天堂精品1024| 91精品视频全国免费| 国产传媒中文字幕东京热| 国产精品第一香蕉视频| 九九热这里有精品20| 国产精品免费视频专区| 国产成人精品午夜福利av免费| 91精品蜜臀一区二区三区| 国产av一区二区三区久久不卡| 日韩黄片大全免费在线看| 粉嫩国产美女国产av| 久久亚洲精品成人国产| 国产爆操白丝美女在线观看| 国产精品亚洲综合色区韩国| 日本成人中文字幕一区| 精品推荐久久久国产av| 国产又大又硬又粗又湿| 99久久免费中文字幕|