99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

java單例模式如何寫(xiě)

這篇文章將為大家詳細(xì)講解有關(guān)java單例模式如何寫(xiě),小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)公司網(wǎng)站設(shè)計(jì),為客戶(hù)量身定制各類(lèi)網(wǎng)站建設(shè)業(yè)務(wù),包括企業(yè)型、電子商務(wù)型、響應(yīng)式網(wǎng)站設(shè)計(jì)、行業(yè)門(mén)戶(hù)型等各類(lèi)網(wǎng)站,實(shí)戰(zhàn)經(jīng)驗(yàn)豐富,成功案例眾多。以客戶(hù)利益為出發(fā)點(diǎn),成都創(chuàng)新互聯(lián)公司網(wǎng)站制作為客戶(hù)規(guī)劃、按需設(shè)計(jì)符合企業(yè)需求、帶有營(yíng)銷(xiāo)價(jià)值的網(wǎng)絡(luò)建站方案認(rèn)真對(duì)待每一個(gè)客戶(hù),我們不用口頭的語(yǔ)言來(lái)吹擂我們的優(yōu)秀,數(shù)千家的成功案例見(jiàn)證著我們的成長(zhǎng)。

單例模式(Singleton Pattern)是 Java 中最簡(jiǎn)單的設(shè)計(jì)模式之一。這種類(lèi)型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式。

這種模式涉及到一個(gè)單一的類(lèi),該類(lèi)負(fù)責(zé)創(chuàng)建自己的對(duì)象,同時(shí)確保只有單個(gè)對(duì)象被創(chuàng)建。這個(gè)類(lèi)提供了一種訪問(wèn)其唯一的對(duì)象的方式,可以直接訪問(wèn),不需要實(shí)例化該類(lèi)的對(duì)象。

注意:

1、單例類(lèi)只能有一個(gè)實(shí)例。2、單例類(lèi)必須自己創(chuàng)建自己的唯一實(shí)例。3、單例類(lèi)必須給所有其他對(duì)象提供這一實(shí)例。

java 單例模式5種寫(xiě)法:

飽漢模式(懶漢模式)

// 飽漢
// UnThreadSafe
public class Singleton1 {
  private static Singleton1 singleton = null;
  private Singleton1() {
  }
  public static Singleton1 getInstance() {
    if (singleton == null) {
      singleton = new Singleton1();
    }
    return singleton;
  }
}

優(yōu)點(diǎn):懶加載啟動(dòng)快,資源占用小,使用時(shí)才實(shí)例化,無(wú)鎖。

缺點(diǎn):非線程安全。

飽漢模式(懶漢模式)--線程安全

public class Singleton {
    /**
     * 定義一個(gè)變量來(lái)存儲(chǔ)創(chuàng)建好的類(lèi)實(shí)例
     */
    private static Singleton uniqueInstance = null;
    /**
     * 私有化構(gòu)造方法,好在內(nèi)部控制創(chuàng)建實(shí)例的數(shù)目
     */
    private Singleton(){
    }
    /**
     * 定義一個(gè)方法來(lái)為客戶(hù)端提供類(lèi)實(shí)例
     * @return 一個(gè)Singleton的實(shí)例
     */
    public static synchronized Singleton getInstance(){
        //判斷存儲(chǔ)實(shí)例的變量是否有值
        if(uniqueInstance == null){
            //如果沒(méi)有,就創(chuàng)建一個(gè)類(lèi)實(shí)例,并把值賦值給存儲(chǔ)類(lèi)實(shí)例的變量
            uniqueInstance = new Singleton();
        }
        //如果有值,那就直接使用
        return uniqueInstance;
    }
    /**
     * 示意方法,單例可以有自己的操作
     */

    public void singletonOperation(){
//功能處理
    }
    /**
     * 示意屬性,單例可以有自己的屬性
     */
    private String singletonData;
    /**
     * 示意方法,讓外部通過(guò)這些方法來(lái)訪問(wèn)屬性的值
     * @return 屬性的值
     */
    public String getSingletonData(){
        return singletonData;
    }
}

優(yōu)點(diǎn):同上,但加鎖了。

缺點(diǎn):synchronized 為獨(dú)占排他鎖,并發(fā)性能差。即使在創(chuàng)建成功以后,獲取實(shí)例仍然是串行化操作。

飽漢模式(懶漢模式)--雙重加鎖檢查DCL(Double Check Lock)

public class Singleton {
    /**
     * 對(duì)保存實(shí)例的變量添加volatile的修飾
     */
    private volatile static Singleton instance = null;
    private Singleton(){
    }

    public static Singleton getInstance(){
//先檢查實(shí)例是否存在,如果不存在才進(jìn)入下面的同步塊
       if(instance == null){
//同步塊,線程安全的創(chuàng)建實(shí)例
            synchronized(Singleton.class){
//再次檢查實(shí)例是否存在,如果不存在才真的創(chuàng)建實(shí)例
                if(instance == null){
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

優(yōu)點(diǎn):懶加載,線程安全。

注:實(shí)例必須有 volatile 關(guān)鍵字修飾,其保證初始化完全。

餓漢模式

public class Singleton {
//4:定義一個(gè)靜態(tài)變量來(lái)存儲(chǔ)創(chuàng)建好的類(lèi)實(shí)例
//直接在這里創(chuàng)建類(lèi)實(shí)例,只會(huì)創(chuàng)建一次
    private static Singleton instance = new Singleton();
//1:私有化構(gòu)造方法,好在內(nèi)部控制創(chuàng)建實(shí)例的數(shù)目
    private Singleton(){
    }
//2:定義一個(gè)方法來(lái)為客戶(hù)端提供類(lèi)實(shí)例
//3:這個(gè)方法需要定義成類(lèi)方法,也就是要加static
//這個(gè)方法里面就不需要控制代碼了
   public static Singleton getInstance(){
//5:直接使用已經(jīng)創(chuàng)建好的實(shí)例
       return instance;
    }
}

優(yōu)點(diǎn):餓漢模式天生是線程安全的,使用時(shí)沒(méi)有延遲。

缺點(diǎn):?jiǎn)?dòng)時(shí)即創(chuàng)建實(shí)例,啟動(dòng)慢,有可能造成資源浪費(fèi)。

Holder模式

public class Singleton {
    /**
     * 類(lèi)級(jí)的內(nèi)部類(lèi),也就是靜態(tài)的成員式內(nèi)部類(lèi),該內(nèi)部類(lèi)的實(shí)例與外部類(lèi)的實(shí)例
     * 沒(méi)有綁定關(guān)系,而且只有被調(diào)用到才會(huì)裝載,從而實(shí)現(xiàn)了延遲加載
     */
    private static class SingletonHolder{
        /**
         * 靜態(tài)初始化器,由JVM來(lái)保證線程安全
         */
        private static Singleton instance = new Singleton();
    }
    /**
     * 私有化構(gòu)造方法
     */
    private Singleton(){
    }
    public static  Singleton getInstance(){
        return SingletonHolder.instance;
    }
}

優(yōu)點(diǎn):將懶加載和線程安全完美結(jié)合的一種方式(無(wú)鎖)。

關(guān)于java單例模式如何寫(xiě)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

文章名稱(chēng):java單例模式如何寫(xiě)
網(wǎng)頁(yè)網(wǎng)址:http://www.yijiale78.com/article44/gdcshe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化定制網(wǎng)站全網(wǎng)營(yíng)銷(xiāo)推廣自適應(yīng)網(wǎng)站營(yíng)銷(xiāo)型網(wǎng)站建設(shè)建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司