大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 單例模式的應用場景介紹

單例模式的應用場景介紹

更新時間:2022-09-19 11:04:11 來源:動力節點 瀏覽1062次

概念

Java單例模式可以說是設計模式里面最好理解的一個模式了,它的意思就是一個類只創建一個對象,所有的引用都只向該對象去操作。

單例模式滿足的要求:

1.構造函數私有化

2.類的內部創建實例

3.提供靜態的唯一獲取實例的方法

單例模式之餓漢式

public class Singleton {
    private static Singleton singleton=new Singleton();  //內部創建實例
    private Integer data=0;  //成員變量
    private Singleton(){}   //構造函數私有化
    //本身線程安全
    public static  Singleton getTarget(){
        return singleton;
    } 
}

單例模式之懶漢式

public class Singleton { 
    private static Singleton singleton=null;  //內部創建實例
    private Integer data=0;  //成員變量
    private Singleton(){}   //構造函數私有化
    //使用同步方法保證線程安全
    public static synchronized Singleton getTarget(){
        if (singleton==null) {
            singleton = new Singleton();
        }
        return singleton;
    }
}

單例模式之雙重檢測懶漢式(DCL)

public class Singleton {
    private volatile static Singleton singleton=null;   //內部創建實例,并使用volatile修飾保證其可見性
    private Integer data=0;  //成員變量
    //構造函數私有化
    private Singleton(){} 
    //對外提供獲取實例方法,并且通關雙重判空,為什么要使用雙重判空而不是單重?
    //1.外判內不判:如果同時兩個線程先判空進入方法內后,一個線程拿到鎖進去
    //創建對象,另一個線程再拿到鎖進去又創建對象
    //2.內判外不判:外判可以先判是否有對象,不需要進去同步代碼塊提高效率
    //同步代碼塊加鎖的方式保證線程安全,只創建出一個實例,對比懶漢式效率更高
    public static Singleton getTarget(){
        if (singleton==null){
            synchronized (Singleton.class){
                if (singleton==null){
                    singleton=new Singleton();
                }
            }
        }
        return singleton;
    }
}

單例模式之內部類

public class Singleton { 
    private Integer data=0;  //成員變量
    private Singleton(){}   //構造函數私有化
    //靜態內部類
    private static class Target{
        private static final Singleton singleton = new Singleton();//內部類創建實例
    }
    //當任何一個線程第一次調用getTarget()時,都會使Target被
    //加載和被初始化,此時靜態初始化器將執行Singleton的初始化操作。
    // (被調用時才進行初始化!)初始化靜態數據時,Java提供了的線程安全性保證。
    public static final Singleton getTarget(){
        return Target.singleton;
    }
}

單例模式之枚舉

public enum Singleton {
   JAVA_Singleton,
}

應用場景

好處:我們為什么要使用單例模式呢?它有什么好處?

1.第一個單例模式可以讓我們只創建一個對象從而避免了頻繁創建對象導致的內存消耗和垃圾回收,一個對象可以搞定的事何樂而不為,除非是特殊情況(Struts2是多例的)。

2.Servlet是單例模式,我們只需要創建一個Servlet,然后接收請求并處理,這樣我們可以很省內存。spring的bean默認也是單例模式,springMVC是單例模式,所以我們可以發現我們的service層,dao層,web層都是使用單例模式,單例無處不在。線程的線程池的設計一般也是采用單例模式,這是由于線程池要方便對池中的線程進行控制。mysql,redis等的連接對象使用單例模式例模式的另外一個好處是可以讓我們操作同一個共享變量來保證同步。網站的計數器,一般也是采用單例模式實現,來保證其同步。

以上就是關于“單例模式的應用場景介紹”,大家如果想了解更多相關知識,不妨來關注一下動力節點的Java設計模式,里面還有更豐富的知識等著大家去學習,希望對大家能夠有所幫助哦。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 在线视频免费观看a毛片 | 又黑又粗又硬欧美视频在线观看 | 日本一视频一区视频二区 | 精品精品国产高清a毛片牛牛 | 精品一区二区三区在线视频 | 黄视频网站免费看 | 天天插日日操 | 色综合久久久高清综合久久久 | 精品国产一区二区在线观看 | 亚洲综合资源 | 酒色网站 | 久操视频免费在线观看 | 国产成人综合精品一区 | 国产在线视频你懂得 | 免费高清a毛片 | 九月婷婷综合 | 99国产精品2018视频全部 | 亚洲欧美中文日韩在线 | 超清波多野结衣精品一区 | 日日影院 | 四虎国产精品永久地址49 | 中文字幕欧美在线观看 | 特黄特色一级aa毛片免费观看 | 免费精品国产 | 日韩中文字幕高清在线专区 | 国产高清成人 | 欧美国产精品不卡在线观看 | 91久久国产精品视频 | 久久免视频| 色大18成网站www在线观看 | 亚洲va在线va天堂va四虎 | 久久国产精品广西柳州门 | 国产精品无码久久综合网 | 欧美韩日在线 | 国产精品亚洲精品不卡 | 真人实干一级毛片aa免费 | 日韩精品久久不卡中文字幕 | 久久91精品国产91久久户 | 国产99视频精品免视看7 | 国产欧美亚洲精品第二区首页 | 亚洲人成在线精品不卡网 |