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

java單例模式使用及注意事項

 更新時間:2014年04月15日 09:18:11   作者:  
這篇文章主要介紹了java單例模式使用及注意事項,需要的朋友可以參考下

1. 說明

1)單例模式:確保一個類只有一個實例,自行實例化并向系統(tǒng)提供這個實例

2)單例模式分類:餓單例模式(類加載時實例化一個對象給自己的引用),懶單例模式(調(diào)用取得實例的方法如getInstance時才會實例化對象)(java中餓單例模式性能優(yōu)于懶單例模式,c++中一般使用懶單例模式)

3)單例模式要素:

a)私有構(gòu)造方法
b)私有靜態(tài)引用指向自己實例
c)以自己實例為返回值的公有靜態(tài)方法

 2.實例

餓單例模式:

復(fù)制代碼 代碼如下:

package com.wish.modedesign;

public class HungrySingleton {
    private static HungrySingleton instance  = new HungrySingleton();
    private HungrySingleton(){
    }
    public static HungrySingleton getInstance(){
        return instance;
    }
}

懶單例模式:

復(fù)制代碼 代碼如下:

package com.wish.modedesign;

public class Singleton {
    private Singleton(){

    }
    private static Singleton instance;
    public static synchronized Singleton getInstance(){   //多線程時注意線程安全
        if(instance == null){
            instance = new Singleton();
        }
        return instance;
    }
}

測試類Driver.java

復(fù)制代碼 代碼如下:

package com.wish.modedesign;

public class Driver {
    public static void main(String[] args) {
        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();
        System.out.println(s1==s2);   //true
    }

}

3.優(yōu)點和適用場景

1)單例模式的優(yōu)點:

在內(nèi)存中只有一個對象,節(jié)省內(nèi)存空間。
避免頻繁的創(chuàng)建銷毀對象,可以提高性能。
避免對共享資源的多重占用。
可以全局訪問。
2)適用場景:

需要頻繁實例化然后銷毀的對象。
創(chuàng)建對象時耗時過多或者耗資源過多,但又經(jīng)常用到的對象。
有狀態(tài)的工具類對象。
頻繁訪問數(shù)據(jù)庫或文件的對象。
4.使用時注意事項

1)使用時不能用反射模式創(chuàng)建單例,否則會實例化一個新的對象

2)使用懶單例模式時注意線程安全問題

3)餓單例模式和懶單例模式構(gòu)造方法都是私有的,因而是不能被繼承的,有些單例模式可以被繼承(如登記式模式)

相關(guān)文章

  • Java 實現(xiàn)并發(fā)的幾種方式小結(jié)

    Java 實現(xiàn)并發(fā)的幾種方式小結(jié)

    這篇文章主要介紹了Java 實現(xiàn)并發(fā)的幾種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Spring Boot集成Thymeleaf模板引擎的完整步驟

    Spring Boot集成Thymeleaf模板引擎的完整步驟

    這篇文章主要給大家介紹了關(guān)于Spring Boot集成Thymeleaf模板引擎的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • mybatis返回結(jié)果為Map問題

    mybatis返回結(jié)果為Map問題

    這篇文章主要介紹了mybatis返回結(jié)果為Map問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Java 反射修改類的常量值、靜態(tài)變量值、屬性值實例詳解

    Java 反射修改類的常量值、靜態(tài)變量值、屬性值實例詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于Java 反射修改類的常量值、靜態(tài)變量值、屬性值實例詳解內(nèi)容,有興趣的讀者們可以跟著學(xué)習(xí)下。
    2021-01-01
  • Java?Stream?API?使代碼更出色的操作完全攻略

    Java?Stream?API?使代碼更出色的操作完全攻略

    這篇文章主要介紹了Java?Stream?API?使代碼更出色的操作完全攻略,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 簡單了解java獲取類的3種方式

    簡單了解java獲取類的3種方式

    這篇文章主要介紹了java獲取類的3種方式詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • Java中的Pair詳細(xì)

    Java中的Pair詳細(xì)

    這篇文章主要介紹Java中的很有意思的Pair,下面文章會以Pair用法展開,感興趣的小伙伴可以參考下面文章的具體內(nèi)容
    2021-10-10
  • SpringBoot集成Druid連接池連接MySQL8.0.11

    SpringBoot集成Druid連接池連接MySQL8.0.11

    這篇博客簡單介紹spring boot集成druid連接池的簡單配置和注意事項,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • es(elasticsearch)整合SpringCloud(SpringBoot)搭建教程詳解

    es(elasticsearch)整合SpringCloud(SpringBoot)搭建教程詳解

    這篇文章主要介紹了es(elasticsearch)整合SpringCloud(SpringBoot)搭建教程,本文通過實例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • 不規(guī)范使用ThreadLocal導(dǎo)致bug分析解決

    不規(guī)范使用ThreadLocal導(dǎo)致bug分析解決

    這篇文章主要為大家介紹了不規(guī)范使用ThreadLocal導(dǎo)致bug分析解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01

最新評論

禄劝| 阿坝| 东宁县| 黔东| 台南市| 乌审旗| 商都县| 洛浦县| 敦煌市| 屯昌县| 桐庐县| 晋城| 甘泉县| 屯门区| 钟山县| 镇赉县| 江孜县| 东山县| 浦城县| 尼玛县| 江西省| 山阴县| 商水县| 西乌| 岳池县| 桦甸市| 吴川市| 河津市| 株洲县| 教育| 萍乡市| 蓬溪县| 新绛县| 禹城市| 铜川市| 象山县| 天门市| 六枝特区| 北票市| 新乡市| 凤山县|