欧美一级内谢_91中文字幕在线_羞羞视频官网_亚洲日韩中文字幕天堂不卡_在线观看日韩一区_国产成人激情

北京北大青鳥(niǎo)學(xué)校:java單例設(shè)計(jì)模式

大家好,我是北京北大青鳥(niǎo)學(xué)校的一名學(xué)員。在學(xué)習(xí)了北大青鳥(niǎo)課程之后,今天我將把java單例設(shè)計(jì)模式總結(jié)一下,希望能與各位共同學(xué)習(xí),也希望北京北大青鳥(niǎo)學(xué)校學(xué)術(shù)部老師給予意見(jiàn)。謝謝!


第一種(線(xiàn)程不安全):
public class Singleton { 
    private static Singleton instance; 
 
    public static Singleton getInstance() { 
    if (instance == null) { 
        instance = new Singleton(); 
    } 
    return instance; 
    } 

 這種寫(xiě)法lazy loading很明顯,但是致命的是在多線(xiàn)程不能正常工作。(北京北大青鳥(niǎo)學(xué)校,北大青鳥(niǎo)課程)

第二種(線(xiàn)程安全):

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

這種寫(xiě)法能夠在多線(xiàn)程中很好的工作,而且看起來(lái)它也具備很好的lazy loading,但是遺憾的是,效率很低,99%情況下不需要同步。(北京北大青鳥(niǎo)學(xué)校,北大青鳥(niǎo)課程


第三種:

Java代碼
public class Singleton { 
    private static Singleton instance = new Singleton(); 
 
    public static Singleton getInstance() { 
    return instance; 
    } 


我認(rèn)為,這種方式基于classloder機(jī)制避免了多線(xiàn)程的同步問(wèn)題,不過(guò),instance在類(lèi)裝載時(shí)就實(shí)例化,雖然導(dǎo)致類(lèi)裝載的原因有很多種,在單例模式中大多數(shù)都是調(diào)用getInstance方法, 但是也不能確定有其他的方式(或者其他的靜態(tài)方法)導(dǎo)致類(lèi)裝載,這時(shí)候初始化instance顯然沒(méi)有達(dá)到lazy loading的效果。(北京北大青鳥(niǎo)學(xué)校,北大青鳥(niǎo)課程


第四種(變種):

Java代碼
public class Singleton { 
    private Singleton instance = null; 
    static { 
    instance = new Singleton(); 
    } 
 
    public static Singleton getInstance() { 
    return this.instance; 
    } 

我認(rèn)為,表面上看起來(lái)差別挺大,其實(shí)和第三種方式差不多,都是在類(lèi)初始化即實(shí)例化instance。


第五種(靜態(tài)內(nèi)部類(lèi)):

Java代碼
public class Singleton { 
    private static class SingletonHolder { 
    private static final Singleton INSTANCE = new Singleton(); 
    } 
 
    public static final Singleton getInstance() { 
    return SingletonHolder.INSTANCE; 
    } 

北京北大青鳥(niǎo)學(xué)校講解:這種方式同樣利用了classloder的機(jī)制來(lái)保證初始化instance時(shí)只有一個(gè)線(xiàn)程,它跟第三種和第四種方式不同的是:第三種和第四種方式是只要Singleton類(lèi)被裝載了,那么instance就會(huì)被實(shí)例化(沒(méi)有達(dá)到lazy loading效果),而這種方式是Singleton類(lèi)被裝載了,instance不一定被初始化。因?yàn)镾ingletonHolder類(lèi)沒(méi)有被主動(dòng)使用,只有顯示通過(guò)調(diào)用getInstance方法時(shí),才會(huì)顯示裝載SingletonHolder類(lèi),從而實(shí)例化instance。想象一下,如果實(shí)例化instance很消耗資源,我想讓他延遲加載,另外一方面,我不希望在Singleton類(lèi)加載時(shí)就實(shí)例化,因?yàn)槲也荒艽_保Singleton類(lèi)還可能在其他的地方被主動(dòng)使用從而被加載,那么這個(gè)時(shí)候?qū)嵗痠nstance顯然是不合適的。這個(gè)時(shí)候,這種方式相比第三和第四種方式就顯得很合理。(未完待續(xù),北京北大青鳥(niǎo)學(xué)校學(xué)員提供)

北大青鳥(niǎo)網(wǎng)上報(bào)名
北大青鳥(niǎo)招生簡(jiǎn)章
主站蜘蛛池模板: 婷婷桃色网 | 天天久| 亚洲色图50p | 国产精品精品 | 天天插天天操 | 国产一区二区影院 | 中文字幕综合 | 日本xx视频免费观看 | 免费黄色录像视频 | 欧美亚洲国产一区二区三区 | 超碰人人插 | 欧美精品一区在线 | 久久久久久色 | 亚洲h视频| 亚洲二区视频 | 青青久草| 国产精品揄拍一区二区久久国内亚洲精 | 久久精品久久久 | 男人av网 | 一区二区小视频 | 日日夜夜天天干 | 日韩视频国产 | 一区二区三区在线看 | 天天操网 | 一区视频 | 欧美freesex黑人又粗又大 | 欧美日韩综合一区 | 日韩av资源站 | 欧美国产精品一区二区三区 | 伊人精品国产 | 亚洲综合在线视频 | 性一区 | 精品1区| 亚洲精品av在线 | 欧美国产中文字幕 | 大吊一区二区 | 亚洲国产欧美一区二区三区久久 | 国产精品一区二区久久 | 国产精品爱久久久久久久 | 一区二区成人 | 91久久|