最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 中單例模式餓漢式與懶漢式的對比

 更新時間:2017年08月16日 11:21:40   投稿:lqh  
這篇文章主要介紹了java 中單例模式餓漢式與懶漢式的對比的相關(guān)資料,這里對這兩種單例模式進行對比,希望大家能理解并應(yīng)用,需要的朋友可以參考下

java 中單例模式餓漢式與懶漢式的對比

概念:

保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。

以前我們的做法是設(shè)置一個全局變量,也就是讓它使得一個對象被訪問。但是它不能防止你實例多個對象。這時我們可以讓類自身負責(zé)保存它的唯一實例,這個類可以保證沒有其他實例可以被創(chuàng)建,并且提供一個訪問該實例的方法。

通過上面的描述,我們可以看到單例模式有以下特點:

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

因此,創(chuàng)建一個類的實例的具體方法(要素)是:

      1、 私有的、靜態(tài)的成員變量
      2、 私有的構(gòu)造方法
      3、 公共的、靜態(tài)的一個入口方法

根據(jù)上面的具體方法,我們來看一下下面的代碼

public class Test { 
  private static Test instance = new Test ();  
   
  private Test (){ 
   
  } 
   
  public static Test GetInstance(){ 
    return instance; 
  } 
} 

從上面的代碼中我們看出,當(dāng)類加載到內(nèi)存時,在我們調(diào)用GetInstance()方法之前,就已經(jīng)在內(nèi)存中創(chuàng)建了一個instance對象。也就是說,不管我是否想用這個方法,在內(nèi)存中就已經(jīng)存在instance這個對象了,此時這個對象就是多余對象了,這樣就會占用內(nèi)存資源。因此我們將這種單例模式稱作“餓漢式”單例模式。其實就是一個“預(yù)加載”的過程。

而“懶漢式”單例模式(也就是“延遲式”創(chuàng)建對象)則是在我們需要的時候才去創(chuàng)建這個對象。這樣就避免了提前創(chuàng)建對象占用內(nèi)存資源。



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

但是,通過觀察上面的代碼,我們可以看出其中還是存在一些問題的。假設(shè),有多個進程同時調(diào)用getInstance()方法,這樣就可能出現(xiàn)同時創(chuàng)建多個對象,那這就不是單例模式了。因此,我們可以加入“同步”這個關(guān)鍵字使得我們的代碼更加的嚴謹。改進之后是這樣的

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

 以上就是java中兩種單例模式的對比,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Java獲取請求頭、參數(shù)、路徑方式

    Java獲取請求頭、參數(shù)、路徑方式

    這篇文章主要介紹了Java獲取請求頭、參數(shù)、路徑方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • java如何讀取resources目錄和同級目錄文件

    java如何讀取resources目錄和同級目錄文件

    介紹了Java中讀取resources目錄和同級目錄文件的方法,并討論了在IDE和發(fā)布環(huán)境中可能遇到的問題,通過測試發(fā)現(xiàn),執(zhí)行目錄可能會影響文件讀取,建議在使用`user.dir`時注意jar包的運行目錄問題
    2024-12-12
  • Java 異步回調(diào)機制實例分析

    Java 異步回調(diào)機制實例分析

    這篇文章主要介紹了Java 異步回調(diào)機制實例解析的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Sentinel熱點key限流的實現(xiàn)詳解

    Sentinel熱點key限流的實現(xiàn)詳解

    這篇文章主要介紹了Sentinel熱點key限流的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 處理java異步事件的阻塞和非阻塞方法分析

    處理java異步事件的阻塞和非阻塞方法分析

    這篇文章主要介紹了處理java異步事件的阻塞和非阻塞方法分析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,阻塞與非阻塞關(guān)注的是交互雙方是否可以彈性工作。,需要的朋友可以參考下
    2019-06-06
  • idea如何關(guān)閉右側(cè)類顯示方法

    idea如何關(guān)閉右側(cè)類顯示方法

    這篇文章主要介紹了idea如何關(guān)閉右側(cè)類顯示方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • IDEA2020.1使用LeetCode插件運行并調(diào)試本地樣例的方法詳解

    IDEA2020.1使用LeetCode插件運行并調(diào)試本地樣例的方法詳解

    這篇文章主要介紹了IDEA2020.1使用LeetCode插件運行并調(diào)試本地樣例的方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-09-09
  • java實現(xiàn)從網(wǎng)絡(luò)下載多個文件

    java實現(xiàn)從網(wǎng)絡(luò)下載多個文件

    這篇文章主要為大家詳細介紹了java實現(xiàn)從網(wǎng)絡(luò)下載多個文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • SpringCache快速使用及入門案例

    SpringCache快速使用及入門案例

    Spring Cache 是Spring 提供的一整套的緩存解決方案,它不是具體的緩存實現(xiàn),本文主要介紹了SpringCache快速使用及入門案例,感興趣的可以了解一下
    2023-08-08
  • SpringBoot實現(xiàn)定時任務(wù)的三種方式小結(jié)

    SpringBoot實現(xiàn)定時任務(wù)的三種方式小結(jié)

    這篇文章主要介紹了SpringBoot實現(xiàn)定時任務(wù)的三種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11

最新評論

鞍山市| 康平县| 琼海市| 突泉县| 抚顺县| 古田县| 双城市| 玛纳斯县| 通辽市| 密山市| 绿春县| 梅河口市| 琼结县| 榕江县| 绥宁县| 五寨县| 横峰县| 邢台市| 孟连| 双柏县| 崇仁县| 大连市| 五家渠市| 平昌县| 新昌县| 夏津县| 邵阳县| 平山县| 陵川县| 吴旗县| 澄迈县| 隆子县| 简阳市| 五华县| 柳河县| 伊通| 安宁市| 兰州市| 泸定县| 海安县| 肥城市|