一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java單例模式使用詳解

java單例模式使用詳解

2019-11-18 14:46Java教程網 JAVA教程

這篇文章主要介紹了java單例模式使用方法,通常它的實現方式分為懶漢式實現和餓漢式,下面是詳細說明加示例,需要的朋友可以參考下

單例模式想必大家都已經很熟悉了,通常它的實現方式分為以下兩種:

 

復制代碼代碼如下:


//懶漢式實現
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 ...
     }
}

 

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

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

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

a.在static{}區塊中初始化的數據

b.訪問final字段時 等等。

在JVM進行類加載的時候他會保證數據是同步的,我們可以這樣實現:

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

 

復制代碼代碼如下:

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

    private Singleton(){}

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

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

 

這樣就可以實現線程安全的餓漢式單利模式。

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

使用枚舉類型實現單例模式如下:

 

復制代碼代碼如下:

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

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

 

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色帝国亚洲欧美在线蜜汁tv | 韩日视频在线观看 | 亚洲国产成人在线视频 | 亚洲人成网站在线观看90影院 | 乌克兰粉嫩摘花第一次 | 国产精品99精品久久免费 | 偷偷狠狠的日日高清完整视频 | 国产不卡视频 | 天天夜夜草草久久伊人天堂 | 日本又大又硬又粗的视频 | 99 久久99久久精品免观看 | 日韩欧美在线观看综合网另类 | 日本人添下面的全过程 | 国内自拍第1页 | 午夜一级毛片看看 | 欧美整片完整片视频在线 | 欧美日韩精品一区二区三区视频播放 | 亚洲mm色国产网站 | 精品久久成人 | 欧美特级午夜一区二区三区 | 日韩每日更新 | 日韩欧美国产综合精品 | 国产欧美久久久精品影院 | 国产成人在线综合 | 91人人| 国产精品二区高清在线 | 亚洲精品视频导航 | 亚洲精品专区 | 59日本人xxxxxxxxx69 | 粗了大了 整进去好爽视频 刺激一区仑乱 | 性欧洲女人18| 免费视频观看 | 男男18视频免费网站 | 香蕉eeww99国产精品 | 欧美精品99 | 2020国产精品视频免费 | 成人a级特黄毛片 | 亚洲国产一区二区a毛片 | 色视频久久 | 精品一区二区三区在线成人 | 狠狠撸在线影院 |