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

java單例模式使用詳解

 更新時間:2014年04月13日 11:13:48   作者:  
這篇文章主要介紹了java單例模式使用方法,通常它的實現(xiàn)方式分為懶漢式實現(xiàn)和餓漢式,下面是詳細說明加示例,需要的朋友可以參考下

單例模式想必大家都已經(jīng)很熟悉了,通常它的實現(xiàn)方式分為以下兩種:

復制代碼 代碼如下:

//懶漢式實現(xiàn)
public class Singleton{
    private static Singleton instance = null;   
    private Singleton(){}
    public static newInstance(){
        if(null == instance){
            instance = new Singleton();
        }
        return instance;
    }
    public void doSomething(){
     // Do something ...
    }
}

//餓漢式
public class Singleton{
    private static Singleton instance = new Singleton();
    private Singleton(){}
    public static Singleton newInstance(){
        return instance;
    }
    public void doSomething(){
     // Do something ...
     }
}

在單利模式的使用中,懶漢式和餓漢式有不同的應用場景,如果創(chuàng)建單利對象很占內(nèi)存但是不是在應用啟動是必須使用的,我們一般會使用懶漢式,等到真的需要使用單利時才會去創(chuàng)建它,如果隨著項目啟動要立即使用我們會使用餓漢模式在初始化是創(chuàng)建單利對象。

上述兩種模式中,如果在多線程的情況下,餓漢式不會出現(xiàn)問題,因為JVM只會加載一次單利類,但是懶漢式可能就會出現(xiàn)重復創(chuàng)建單利對象的問題,是線程不安全的。

那有沒有辦法,使餓漢式的單利模式也是線程安全的呢?答案肯定是有的,大家通常會使用加同步鎖的方式去實現(xiàn),但是這樣實現(xiàn)起來比較麻煩,我們可以利用JVM的類加載機制去實現(xiàn)。在很多情況下JVM已經(jīng)為我們提供了同步控制,比如:

a.在static{}區(qū)塊中初始化的數(shù)據(jù)

b.訪問final字段時 等等。

在JVM進行類加載的時候他會保證數(shù)據(jù)是同步的,我們可以這樣實現(xiàn):

采用類級內(nèi)部類,在這個內(nèi)部類里面去創(chuàng)建對象實例。這樣的話,只要不使用類級內(nèi)部類他就不會去創(chuàng)建對象實例,從而實現(xiàn)懶漢式的延遲加載和線程安全。

復制代碼 代碼如下:

public class Singleton{
    //內(nèi)部類,在裝載該內(nèi)部類時才會去創(chuàng)建單利對象
    private static class SingletonHolder{
        public static Singleton instance = new Singleton();
    }

    private Singleton(){}

    public static Singleton newInstance(){
        return SingletonHolder.instance;
    }

    public void doSomething(){
        //do something
    }
}

這樣就可以實現(xiàn)線程安全的餓漢式單利模式。

另外我們還可以通過枚舉類型來實現(xiàn)單利模式,這也是比較推薦的方式。

使用枚舉類型實現(xiàn)單例模式如下:

復制代碼 代碼如下:

public enum Singleton{
    //定義一個枚舉的元素,它就是Singleton的一個實例
    instance;

    public void doSomething(){
        // do something ...
    }   
}

Ok,單例模式先介紹到這里。

相關(guān)文章

  • Springboot整合GateWay+Nacos實現(xiàn)動態(tài)路由

    Springboot整合GateWay+Nacos實現(xiàn)動態(tài)路由

    本文主要介紹了Springboot整合GateWay+Nacos實現(xiàn)動態(tài)路由,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-08-08
  • Java基礎之二叉搜索樹的基本操作

    Java基礎之二叉搜索樹的基本操作

    發(fā)現(xiàn)許多小伙伴還不清楚Java二叉搜索樹的基本操作,今天特地整理了這篇文章,文中有非常詳細的代碼示例,對正在學習Java的小伙伴很有幫助,需要的朋友可以參考下
    2021-05-05
  • Java微信二次開發(fā)(一) Java微信請求驗證功能

    Java微信二次開發(fā)(一) Java微信請求驗證功能

    這篇文章主要為大家詳細介紹了Java微信二次開發(fā)第一篇,Java微信請求驗證功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Spring中@PropertySource配置的用法

    Spring中@PropertySource配置的用法

    這篇文章主要介紹了Spring中@PropertySource配置的用法,@PropertySource 和 @Value
    組合使用,可以將自定義屬性文件中的屬性變量值注入到當前類的使用@Value注解的成員變量中,需要的朋友可以參考下
    2023-11-11
  • Java 值傳遞和引用傳遞詳解及實例代碼

    Java 值傳遞和引用傳遞詳解及實例代碼

    這篇文章主要介紹了 Java 值傳遞和引用傳遞詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • spring boot使用WebClient調(diào)用HTTP服務代碼示例

    spring boot使用WebClient調(diào)用HTTP服務代碼示例

    這篇文章主要介紹了spring boot使用WebClient調(diào)用HTTP服務代碼示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Spring Boot詳解創(chuàng)建和運行基礎流程

    Spring Boot詳解創(chuàng)建和運行基礎流程

    這篇文章主要介紹了SpringBoot創(chuàng)建和運行的基礎流程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • mybatis如何批量更新list對象

    mybatis如何批量更新list對象

    這篇文章主要介紹了mybatis如何批量更新list對象問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java格式化輸出詳細講解(printf、print、println、format等)

    Java格式化輸出詳細講解(printf、print、println、format等)

    Java的格式化輸出等同于String.Format,與C有很大的相似,下面這篇文章主要給大家介紹了關(guān)于Java格式化輸出(printf、print、println、format等)的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-03-03
  • Springboot+Jackson自定義注解數(shù)據(jù)脫敏的項目實踐

    Springboot+Jackson自定義注解數(shù)據(jù)脫敏的項目實踐

    數(shù)據(jù)脫敏可以對敏感數(shù)據(jù)比如 手機號、銀行卡號等信息進行轉(zhuǎn)換或者修改,本文主要介紹了Springboot+Jackson?自定義注解數(shù)據(jù)脫敏,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-08-08

最新評論

甘泉县| 怀安县| 张北县| 江永县| 娱乐| 喜德县| 六盘水市| 玉林市| 封开县| 旬阳县| 上虞市| 连州市| 绥中县| 肥东县| 宜章县| 肇庆市| 灵寿县| 五莲县| 湖口县| 大冶市| 博爱县| 靖江市| 泰顺县| 讷河市| 平定县| 汽车| 贵定县| 禄劝| 凤庆县| 禹城市| 宽甸| 湟源县| 山阴县| 水富县| 连州市| 苏州市| 温泉县| 扶风县| 横山县| 临朐县| 紫云|