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

Java詳細介紹單例模式的應用

 更新時間:2022年09月23日 09:19:05   作者:方片6  
單例模式(Singleton Pattern)是 Java 中最簡單的設(shè)計模式之一。這種類型的設(shè)計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式

一、什么是單例模式

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

這種模式涉及到一個單一的類,該類負責創(chuàng)建自己的對象,同時確保只有單個對象被創(chuàng)建。這個類提供了一種訪問其唯一的對象的方式,可以直接訪問,不需要實例化該類的對象。

注意:

1、單例類只能有一個實例。

2、單例類必須自己創(chuàng)建自己的唯一實例。

3、單例類必須給所有其他對象提供這一實例。

二、實現(xiàn)單例模式的幾種方法

1.懶漢模式(線程不安全)

2.懶漢模式(線程安全)

3.餓漢模式

4.雙檢鎖/雙重校驗鎖

5.登記式/靜態(tài)內(nèi)部類

6.枚舉

1. 懶漢模式(線程不安全)

是否 Lazy 初始化:是

是否多線程安全:否

實現(xiàn)難度:易

描述:這種方式是最基本的實現(xiàn)方式,這種實現(xiàn)最大的問題就是不支持多線程。因為沒有加鎖 synchronized,所以嚴格意義上它并不算單例模式。

public class A{
	// 懶漢模式
	private static A a = null;
	// 私有化構(gòu)造方法
	private A(){};
	public static A getInstance(){
		if(a == null){
			a = new A();
		}
		return a;
	}
}

2. 懶漢模式(線程安全)

是否 Lazy 初始化:是

是否多線程安全:是

實現(xiàn)難度:易

描述:這種方式具備很好的 lazy loading,能夠在多線程中很好的工作,但是,效率很低,99% 情況下不需要同步。

優(yōu)點:第一次調(diào)用才初始化,避免內(nèi)存浪費。

缺點:必須加鎖 synchronized 才能保證單例,但加鎖會影響效率。

public class A{
	// 懶漢模式
	private static A a = null;
	private A(){};
	public static synchronized A getInstance(){
		if(a == null){
			a = new A();
		}
		return a;
	}
}

3. 餓漢模式

是否 Lazy 初始化:否

是否多線程安全:是

實現(xiàn)難度:易

描述:這種方式比較常用,但容易產(chǎn)生垃圾對象。

優(yōu)點:沒有加鎖,執(zhí)行效率會提高。

缺點:類加載時就初始化,浪費內(nèi)存。

public class B{
	// 餓漢模式
	private static B b = new B();
	public static B getInstance(){
		return b;
	}
}

到此這篇關(guān)于Java詳細介紹單例模式的應用的文章就介紹到這了,更多相關(guān)Java單例模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java生成CSV文件實例詳解

    Java生成CSV文件實例詳解

    這篇文章主要介紹了Java生成CSV文件的方法,很實用的功能,需要的朋友可以參考下
    2014-07-07
  • MyBatisPlus的autoResultMap生成策略實現(xiàn)

    MyBatisPlus的autoResultMap生成策略實現(xiàn)

    本文主要介紹了MyBatisPlus的autoResultMap生成策略實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-02-02
  • Spring?Boot?整合持久層之Spring Data JPA

    Spring?Boot?整合持久層之Spring Data JPA

    在介紹Spring Data JPA的時候,我們首先認識下Hibernate。Hibernate是數(shù)據(jù)訪問解決技術(shù)的絕對霸主,使用O/R映射技術(shù)實現(xiàn)數(shù)據(jù)訪問,O/R映射即將領(lǐng)域模型類和數(shù)據(jù)庫的表進行映射,通過程序操作對象而實現(xiàn)表數(shù)據(jù)操作的能力,讓數(shù)據(jù)訪問操作無須關(guān)注數(shù)據(jù)庫相關(guān)的技術(shù)
    2022-08-08
  • Java的IO模型、Netty原理解析

    Java的IO模型、Netty原理解析

    Java的I/O是以流的方式進行數(shù)據(jù)輸入輸出的,Java的類庫涉及很多領(lǐng)域的IO內(nèi)容:標準的輸入輸出,文件的操作、網(wǎng)絡(luò)上的數(shù)據(jù)傳輸流、字符串流、對象流等,這篇文章主要介紹了Java的IO模型、Netty原理詳解,需要的朋友可以參考下
    2025-03-03
  • java設(shè)計模式之模板方法模式詳解

    java設(shè)計模式之模板方法模式詳解

    這篇文章主要為大家詳細介紹了java設(shè)計模式之模板方法模式的相關(guān)資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Mybatis-Plus中的查詢指定字段

    Mybatis-Plus中的查詢指定字段

    在使用Mybatis-Plus進行數(shù)據(jù)查詢時,可以通過指定字段來優(yōu)化查詢效率,方法一和方法二分別執(zhí)行不同的SQL語句,其中方法二在執(zhí)行時通常會更高效,因為它可能通過減少數(shù)據(jù)處理量和優(yōu)化查詢結(jié)構(gòu)來提升性能,比較兩種方法的SQL執(zhí)行情況
    2024-09-09
  • 論java如何通過反射獲得方法真實參數(shù)名及擴展研究

    論java如何通過反射獲得方法真實參數(shù)名及擴展研究

    這篇文章主要為大家介紹了java如何通過反射獲得方法的真實參數(shù)名以及擴展研究,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進步早日升職加薪
    2022-01-01
  • Springboot整合第三方登錄功能的實現(xiàn)示例

    Springboot整合第三方登錄功能的實現(xiàn)示例

    本文主要介紹了Springboot整合第三方登錄功能的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • java數(shù)據(jù)結(jié)構(gòu)與算法之插入排序詳解

    java數(shù)據(jù)結(jié)構(gòu)與算法之插入排序詳解

    這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)與算法之插入排序,結(jié)合實例形式分析了java插入排序的概念、分類、原理、實現(xiàn)方法與相關(guān)注意事項,需要的朋友可以參考下
    2017-05-05
  • idea2020導入spring5.1的源碼詳細教程

    idea2020導入spring5.1的源碼詳細教程

    這篇文章主要介紹了idea2020導入spring5.1的源碼的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06

最新評論

清涧县| 望奎县| 敦煌市| 仁布县| 三台县| 镶黄旗| 铁岭县| 漠河县| 博客| 本溪市| 玉林市| 六盘水市| 大邑县| 宜州市| 广德县| 楚雄市| 娄底市| 桃园市| 临桂县| 汉阴县| 鱼台县| 藁城市| 通化市| 南漳县| 壤塘县| 梁山县| 武穴市| 余庆县| 南江县| 黑山县| 白河县| 罗江县| 乌兰察布市| 信宜市| 长垣县| 栖霞市| 天祝| 东城区| 宣恩县| 汤原县| 永川市|