国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

夕陽下, 那是我在奔跑——單件模式

lieeps / 1563人閱讀

摘要:急切的創(chuàng)建對象餓漢式以上爲(wèi)?zhàn)I漢式單列設(shè)計(jì),該設(shè)計(jì)是線程安全的,即不同的線程在調(diào)用時(shí)返回的是統(tǒng)一對象,在加載這個(gè)類時(shí),馬上創(chuàng)建了這個(gè)類的唯一單列實(shí)列。

單件模式(JAVA實(shí)現(xiàn))

定義

單件模式: 確保一個(gè)類只有一個(gè)實(shí)列, 並提供一個(gè)全局訪問點(diǎn)

單件模式和全局變量的區(qū)別

若將對象賦值給一個(gè)全局變量, 則該對象需在程序開始時(shí)就創(chuàng)建好, 而改對象可能不會(huì)使用, 造成資源浪費(fèi), 而單件模式支持延遲實(shí)例化

即急切實(shí)例化 和 延遲實(shí)例化 的區(qū)別

類圖:

單件模式

1 基本用法(懶漢式)
class Singleton
{
    private static Singleton singleton;
    private Singleton(){};
    public static Singleton getInstance()
    {
        if (null == singleton) {
            singleton = new Singleton();
        }
        return singleton;
    }
}

以上爲(wèi)單列模式的懶漢式設(shè)計(jì)

該設(shè)計(jì)時(shí)線程不安全的, 即當(dāng)不同的線程調(diào)用getInstance時(shí), 返回不同的對象。

2 急切的創(chuàng)建對象(餓漢式)
class Singleton
{
    private static Singleton singleton = new Singleton();
    private Singleton(){};
    public static Singleton getInstance()
    {
        return singleton;
    }
}

以上爲(wèi)?zhàn)I漢式單列設(shè)計(jì), 該設(shè)計(jì)是線程安全的, 即不同的線程在調(diào)用getInstance時(shí)返回的是統(tǒng)一對象,

JVM在加載這個(gè)類時(shí), 馬上創(chuàng)建了這個(gè)類的唯一單列實(shí)列。

同步 synchronized

其實(shí), 只要把getInstance變成同步的, 就能解決懶漢式線程不安全這一不足,

設(shè)計(jì)如下:

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

以上爲(wèi)加鎖了的懶漢式單列設(shè)計(jì), 該設(shè)計(jì)是線程安全的, 不同的線程在調(diào)用getInstance時(shí), 返回唯一對象,

但是, 後續(xù)每一次調(diào)用getinstance時(shí),都會(huì)進(jìn)入同步鎖, 同步會(huì)降低性能, 這是真的, 尤其是當(dāng)該類用於很多業(yè)務(wù)邏輯時(shí),

雙重檢查加鎖

用雙重檢查加鎖, 在getInstance中減少使用同步

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

需java版本>=1.5, 地版本不支持volatile關(guān)鍵字

以上即爲(wèi)雙重檢查加鎖, 該設(shè)計(jì)能大大的減少getInstance的性能消耗,

準(zhǔn)備是用php來實(shí)現(xiàn)的, 但是發(fā)現(xiàn)php暫不支持同步代碼快, 此處採用java實(shí)現(xiàn)了

轉(zhuǎn)載請著名出處,godruoyi

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/66051.html

相關(guān)文章

  • 那是我在夕陽奔跑:邊跑邊學(xué)習(xí)html5之a(chǎn)udio與video

    摘要:尤其是喬布斯在年發(fā)布的一篇的文章。喬布斯在里面寫下了關(guān)于的一點(diǎn)看法,說明自己為什么不使用,談到關(guān)于的一些問題,比如開放性,安全性,對于設(shè)備續(xù)航的影響,不利于觸摸屏,等等。終于,于年月日,爸爸也放棄治療了,宣布將于年正式退休。 今天為大家分享一下html5中的視頻(video)與音頻(audio)。在進(jìn)入主題之前我們先了解一下Flash與html5這兩種技術(shù)的時(shí)代背景與發(fā)展歷史。 1.前...

    gself 評論0 收藏0
  • 那是我在夕陽奔跑:邊跑邊學(xué)習(xí)html5之a(chǎn)udio與video

    摘要:尤其是喬布斯在年發(fā)布的一篇的文章。喬布斯在里面寫下了關(guān)于的一點(diǎn)看法,說明自己為什么不使用,談到關(guān)于的一些問題,比如開放性,安全性,對于設(shè)備續(xù)航的影響,不利于觸摸屏,等等。終于,于年月日,爸爸也放棄治療了,宣布將于年正式退休。 今天為大家分享一下html5中的視頻(video)與音頻(audio)。在進(jìn)入主題之前我們先了解一下Flash與html5這兩種技術(shù)的時(shí)代背景與發(fā)展歷史。 1.前...

    flybywind 評論0 收藏0
  • 那是我在夕陽奔跑:邊跑邊學(xué)習(xí)html5之a(chǎn)udio與video

    摘要:尤其是喬布斯在年發(fā)布的一篇的文章。喬布斯在里面寫下了關(guān)于的一點(diǎn)看法,說明自己為什么不使用,談到關(guān)于的一些問題,比如開放性,安全性,對于設(shè)備續(xù)航的影響,不利于觸摸屏,等等。終于,于年月日,爸爸也放棄治療了,宣布將于年正式退休。 今天為大家分享一下html5中的視頻(video)與音頻(audio)。在進(jìn)入主題之前我們先了解一下Flash與html5這兩種技術(shù)的時(shí)代背景與發(fā)展歷史。 1.前...

    LiuZh 評論0 收藏0
  • 對,是我夕陽奔跑(剛過凌點(diǎn),‘思否’的第一篇文章 小白開始認(rèn)真了 哈哈)

    摘要:我們將通過一個(gè)構(gòu)造函數(shù)創(chuàng)建的對象,稱為是該類的實(shí)例孫悟空男玉兔精女奔波霸男使用可以檢查一個(gè)對象是否是一個(gè)類的實(shí)例語法對象構(gòu)造函數(shù)如果是,則返回,否則返回所有的對象都是的后代,所以任何對象和做檢查時(shí)都會(huì)返回 使用對象字面量模式來創(chuàng)建一個(gè)對象 (它也叫單例模式 //JS與其他語言的單例模式有很大的區(qū)別(如Java),但這就是語言的區(qū)別) var obj = {}; ...

    vpants 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<