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

資訊專欄INFORMATION COLUMN

設(shè)計模式之【單例模式】

idisfkj / 1941人閱讀

摘要:基本的單例模式實現(xiàn)方式但是不足之處是,的創(chuàng)建時間不受控制。結(jié)合兩種單例模式的實現(xiàn)方式這種方式?jīng)]有加鎖,在并發(fā)模式下性能優(yōu)越,而且只有在方法被第一次調(diào)用時,實例才會被創(chuàng)建。高并發(fā)程序設(shè)計第章并行模式與算法

基本的單例模式實現(xiàn)方式
public class Singleton {
    
    private Singleton () {
        System.out.println("Singleton is created");
    }
    
    private static Singleton instance = new Singleton();
    
    public static Singleton getInstance () {
        return instance;
    }
    
}

但是不足之處是,Singleton的創(chuàng)建時間不受控制。對于靜態(tài)成員instance, 它會在類第一次初始化的時候被創(chuàng)建,但這個時刻并不一定是getInstance()方法第一次被調(diào)用的時候。例如:

public class Singleton {

    public static int STATUS = 1;
    
    private Singleton () {
        System.out.println("Singleton is created");
    }
    
    private static Singleton instance = new Singleton();
    
    public static Singleton getInstance () {
        return instance;
    }
    
}

注意這里的單例包含一個靜態(tài)成員STATUS, 此時在任意地方引用這個STATUS都會導(dǎo)致Singleton這個類被初始化,并創(chuàng)建instance實例。

延遲加載的單例模式實現(xiàn)方式
public class LazySingleton {
    
    private LazySingleton() {
        System.out.println("Singleton is created");
    }
    
    private static LazySingleton instance = null;
    
    public static synchronized LazySingleton getInstance() {
        if (instance == null)
            instance = new LazySingleton();
        return instance;
    }

}

這樣在調(diào)用getInstance()方法的時候才會創(chuàng)建單例對象。但是壞處是在并發(fā)環(huán)境下加鎖,會對性能產(chǎn)生影響。

結(jié)合兩種單例模式的實現(xiàn)方式
public class StaticSingleton {

    private StaticSingleton() {
        System.out.println("Singleton is created");
    }
    
    private static class SingletonHolder {
        private static StaticSingleton instance = new StaticSingleton();
    }
    
    public static StaticSingleton getInstance() {
        return SingletonHolder.instance;
    }
    
}

這種方式?jīng)]有加鎖,在并發(fā)模式下性能優(yōu)越,而且只有在getInstance()方法被第一次調(diào)用時,StaticSingleton實例才會被創(chuàng)建。

《Java高并發(fā)程序設(shè)計》第5章 · 并行模式與算法

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

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

相關(guān)文章

  • 大話PHP設(shè)計模式單例模式

    摘要:上面是簡單的單例模式,自己寫程序的話夠用了,如果想繼續(xù)延伸,請傳送至大話設(shè)計模式之單例模式升級版 看了那么多單例的介紹,都是上來就說怎么做,也沒見說為什么這么做的。那小的就來說說為什么會有單例這個模式以便更好的幫助初學(xué)者真正的理解這個設(shè)計模式,如果你是大神,也不妨看完指正一下O(∩_∩)O首先我不得不吐槽一下這個模式名字單例,初學(xué)者通過字面很難理解什么是單例,我覺得應(yīng)該叫唯一模式更貼切...

    VEIGHTZ 評論0 收藏0
  • Java 設(shè)計模式單例模式

    摘要:在設(shè)計模式一書中,將單例模式稱作單件模式。通過關(guān)鍵字,來保證不會同時有兩個線程進(jìn)入該方法的實例對象改善多線程問題為了符合大多數(shù)程序,很明顯地,我們需要確保單例模式能在多線程的情況下正常工作。 在《Head First 設(shè)計模式》一書中,將單例模式稱作單件模式。這里為了適應(yīng)大環(huán)境,把它稱之為大家更熟悉的單例模式。 一、了解單例模式 1.1 什么是單例模式 單例模式確保一個類只有一個實例,...

    everfight 評論0 收藏0
  • 大話PHP設(shè)計模式單例模式升級版

    摘要:用來指向已創(chuàng)建好的實例構(gòu)造函數(shù)為空注意這里是關(guān)鍵這是我們需要調(diào)用的方法把函數(shù)也定義為空,這樣就大功告成啦。 接上一篇大話PHP設(shè)計模式之單例模式 這一篇介紹一下升級版的單例模式,廢話不說先上代碼 不完美的單例模式 class singleMode { //用來指向已創(chuàng)建好的實例 public static $instance; //判斷是...

    darcrand 評論0 收藏0
  • Java基礎(chǔ)學(xué)習(xí)——多線程單例設(shè)計模式(轉(zhuǎn))

    摘要:總之,選擇單例模式就是為了避免不一致狀態(tài),避免政出多頭。二餓漢式單例餓漢式單例類在類初始化時,已經(jīng)自行實例化靜態(tài)工廠方法餓漢式在類創(chuàng)建的同時就已經(jīng)創(chuàng)建好一個靜態(tài)的對象供系統(tǒng)使用,以后不再改變,所以天生是線程安全的。 概念:  Java中單例模式是一種常見的設(shè)計模式,單例模式的寫法有好幾種,這里主要介紹兩種:懶漢式單例、餓漢式單例。  單例模式有以下特點:  1、單例類只能有一個實例。 ...

    dendoink 評論0 收藏0
  • JavaScript設(shè)計模式與開發(fā)實踐系列單例模式

    摘要:本系列為設(shè)計模式與開發(fā)實踐作者曾探學(xué)習(xí)總結(jié),如想深入了解,請支持作者原版單例模式實現(xiàn)單例模式單例模式的定義是保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。 本系列為《JavaScript設(shè)計模式與開發(fā)實踐》(作者:曾探)學(xué)習(xí)總結(jié),如想深入了解,請支持作者原版 單例模式 實現(xiàn)單例模式 單例模式的定義是:保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。單例模式是一種常用的模式...

    Airy 評論0 收藏0
  • 每天一個設(shè)計模式單例模式

    摘要:博主按每天一個設(shè)計模式旨在初步領(lǐng)會設(shè)計模式的精髓,目前采用靠這吃飯和純粹喜歡兩種語言實現(xiàn)。單例模式用途如果一個類負(fù)責(zé)連接數(shù)據(jù)庫的線程池日志記錄邏輯等等,此時需要單例模式來保證對象不被重復(fù)創(chuàng)建,以達(dá)到降低開銷的目的。 博主按:《每天一個設(shè)計模式》旨在初步領(lǐng)會設(shè)計模式的精髓,目前采用javascript(_靠這吃飯_)和python(_純粹喜歡_)兩種語言實現(xiàn)。誠然,每種設(shè)計模式都有多種實...

    yy736044583 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<