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

Java設(shè)計模式之單例模式簡析

 更新時間:2023年12月02日 09:13:20   作者:nuomizhende45  
這篇文章主要介紹了Java設(shè)計模式之單例模式簡析,單例模式是常用的設(shè)計模式,在我們的系統(tǒng)乃至在框架中都普遍被用到,單例模式就是使一個類有且只有一個實例用于外部訪問,這樣大大的節(jié)省了系統(tǒng)的資源,需要的朋友可以參考下

什么是單例模式?

單例模式是常用的設(shè)計模式,在我們的系統(tǒng)乃至在框架中都普遍被用到,單例模式就是使一個類有且只有一個實例用于外部訪問,這樣大大的節(jié)省了系統(tǒng)的資源,而單例模式需要注意的也就以下三點:

  • 保證這個類有且只有一個實例
  • 自行創(chuàng)建這個實例
  • 提供這個實例供外部訪問

代碼實現(xiàn)需要注意的就是

  • 單例模式的類構(gòu)造方法私有化
  • 這個類的定義中包含自己的一個靜態(tài)實例對象
  • 提供一個共有靜態(tài)方法供外部調(diào)用

三種實現(xiàn)方式

1、懶漢式

懶漢式與延遲初始化有些相似,就是沒人用的時候我不實例化出來,有人需要調(diào)用了我再實例化出來,JAVA代碼實現(xiàn)如下

public class SingletonClz{
    //實例
    private static SingletonClz instance = null; 
    //私有構(gòu)造
    private SingletonClz(){}
    //外部調(diào)用方法
    public static getInstance()
    {
        if(null == instance)
        {
            instance = new SingletonClz(); 
            return instance;  
        }
        else
        {
            return instance;
        }
    }
}

2、餓漢式

先實例化出來,有人用就直接返回即可

public class SingletonClz{
    //實例
    private final static SingletonClz INSTANCE = new SingletonClz(); 
    //私有構(gòu)造
    private SingletonClz(){}
    //外部調(diào)用方法
    public static getInstance()
    {
         return instance;
    }
}

3、加鎖的單例模式

public class SingletonClz{
    //實例
    private static SingletonClz instance = null; 
    //私有構(gòu)造
    private SingletonClz(){}
    //外部調(diào)用方法
    public static getInstance()
    {
        synchronized(SingletonClz.class)
        {
            if(null == instance)
            {
                instance = new SingletonClz();  
            }
        }
            return instance;
    }
}

這里加一個重量級的鎖是為了防止并發(fā)的情況下兩個線程同時訪問這個方法同時發(fā)現(xiàn)instace為null,就都跑去實例化這個對象了。

加了一個synchronized鎖就防止了這一情況的發(fā)生,當有一個線程拿到了鎖,另一個就阻塞在外面知道鎖的釋放,當線程A實例化完成并釋放鎖后,B進來發(fā)現(xiàn)instace不等于空了,就不會再去實例化了。

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

相關(guān)文章

  • Java中StringBuilder字符串類型的操作方法及API整理

    Java中StringBuilder字符串類型的操作方法及API整理

    Java中的StringBuffer類繼承于AbstractStringBuilder,用來創(chuàng)建非線程安全的字符串類型對象,下面即是對Java中StringBuilder字符串類型的操作方法及API整理
    2016-05-05
  • 詳解Java比較器

    詳解Java比較器

    這篇文章主要介紹了Java比較器的相關(guān)資料,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • Spring Security使用多種加密方式進行密碼校驗的代碼示例

    Spring Security使用多種加密方式進行密碼校驗的代碼示例

    在Web應用中,密碼的安全存儲和驗證是至關(guān)重要的,本文將通過一個具體的代碼示例,介紹和總結(jié)如何在Spring Security中使用多種加密方式進行密碼校驗,文中通過代碼講解得非常詳細,需要的朋友可以參考下
    2024-06-06
  • Spring中如何動態(tài)注入Bean實例教程

    Spring中如何動態(tài)注入Bean實例教程

    這篇文章主要給大家介紹了關(guān)于Spring中如何動態(tài)注入Bean的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-12-12
  • Java修改eclipse中web項目的server部署路徑問題

    Java修改eclipse中web項目的server部署路徑問題

    這篇文章主要介紹了Java修改eclipse中web項目的server部署路徑,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • SpringBoot整合mybatis/mybatis-plus實現(xiàn)數(shù)據(jù)持久化的操作

    SpringBoot整合mybatis/mybatis-plus實現(xiàn)數(shù)據(jù)持久化的操作

    這篇文章主要介紹了SpringBoot整合mybatis/mybatis-plus實現(xiàn)數(shù)據(jù)持久化,本節(jié)內(nèi)容我們介紹了數(shù)據(jù)持久化的相關(guān)操作,并且是基礎(chǔ)傳統(tǒng)的關(guān)系型數(shù)據(jù)庫——mysql,需要的朋友可以參考下
    2022-10-10
  • MyBatis入門介紹(超簡單)

    MyBatis入門介紹(超簡單)

    mybatis是Java的持久層框架, JAVA操作數(shù)據(jù)庫是通過jdbc來操作的,而mybatis是對jdbc的封裝。下文給大家介紹mybatis入門知識,感興趣的朋友參考下吧
    2017-08-08
  • java進行error捕獲和處理示例(java異常捕獲)

    java進行error捕獲和處理示例(java異常捕獲)

    通常來說,大家都是對Java中的Exception進行捕獲和進行相應的處理,有些人說,error就無法捕獲了。其實,error也是可以捕獲的。Error和Exception都是Throwable的子類。既然可以catch Throwable,那么error也是可以catch的
    2014-01-01
  • Spring在SingleTon模式下的線程安全詳解

    Spring在SingleTon模式下的線程安全詳解

    這篇文章主要介紹了Spring在SingleTon模式下的線程安全詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 詳解Spring通過@Value注解注入屬性的幾種方式

    詳解Spring通過@Value注解注入屬性的幾種方式

    本篇文章主要介紹了詳解Spring通過@Value注解注入屬性的幾種方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03

最新評論

合江县| 八宿县| 桂阳县| 甘肃省| 福建省| 东方市| 武隆县| 祥云县| 焦作市| 石家庄市| 仲巴县| 石渠县| 湛江市| 怀远县| 舒兰市| 桂阳县| 绿春县| 泰来县| 土默特左旗| 大宁县| 康定县| 西宁市| 肥乡县| 永泰县| 齐齐哈尔市| 容城县| 湾仔区| 柘荣县| 贺州市| 万源市| 青铜峡市| 阿拉善右旗| 剑河县| 武川县| 连江县| 白山市| 伊宁县| 敦煌市| 长宁县| 锡林浩特市| 蒙阴县|