激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

香港云服务器
服務器之家 - 編程語言 - JAVA教程 - java設計模式之單例模式學習

java設計模式之單例模式學習

2019-10-30 17:07java教程網 JAVA教程

單例對象(Singleton)是一種常用的設計模式。在Java應用中,單例對象能保證在一個JVM中,該對象只有一個實例存在

1 概述

單例模式有幾個好處:

(1)某些類創建比較頻繁,對于一些大型的對象,這是一筆很大的系統開銷。

(2)省去了new操作符,降低了系統內存的使用頻率,減輕GC壓力。

(3)有些類如交易所的核心交易引擎,控制著交易流程,如果該類可以創建多個的話,系統完全亂了。

2 詳解

單例模式常用的寫法有如下這么兩種。

2.1 餓漢式

如果應用程序總是創建并使用單例模式,或者在創建和運行時壓力不是很大的情況下,可以使用一個私有靜態變量,提前把對象創建好。

 

復制代碼代碼如下:

package org.scott.singleton;
/** 
 * @author Scott
 * @version 2013-11-16 
 * @description
 */
public class Singleton1 {
    private static Singleton1 uniqueInstance = new Singleton1();

    private Singleton1(){

    }

    public static Singleton1 getInstance(){
        return uniqueInstance;
    }
}

 

這樣做的話,當JVM加載這個類的時候,根據初始化的順序,就已經把對象創建好了。同時,JVM可以保證任何線程在訪問這個單例對象之前,一定先創建此實例,并且只創建一次。

當然,也可以使用一個靜態內部類來完成同樣的功能。

 

復制代碼代碼如下:

package org.scott.singleton;
/** 
 * @author Scott
 * @version 2013-11-16 
 * @description
 */
public class Singleton2 {  

    private Singleton2() {  
    }  

    /** 
     * 此處使用一個內部類來維護單例 
     * */  
    private static class SingletonFactory {  
        private static Singleton2 instance = new Singleton2();  
    }  

    public static Singleton2 getInstance() {  
        return SingletonFactory.instance;  
    }  

    /**
     * 如果該對象被用于序列化,可以保證對象在序列化前后保持一致 
     * */  
    public Object readResolve() {  
        return getInstance();  
    }  
}

 

2.2 雙重鎖方式
 “雙重鎖”,顧名思義就是兩把鎖,第一把鎖用來檢查要創建的實例對象是否已經創建了,如果尚未創建才使用第二把鎖來進行同步。

 

復制代碼代碼如下:

package org.scott.singleton;
/** 
 * @author Scott
 * @version 2013-11-16 
 * @description
 */
public class Singleton3 {
    private volatile static Singleton3 uniqueInstance;

    private Singleton3(){

    }

    public static Singleton3 getInstance(){
        if(uniqueInstance == null){
            synchronized(Singleton3.class){
                if(uniqueInstance == null){
                    uniqueInstance = new Singleton3();
                }
            }
        }
        return uniqueInstance;
    }
}

 

如果對性能要求比較高的話,這種方式可以大大減少創建的時間,目前來說,這種方式也是比較通用的一種創建單例的方式。

延伸 · 閱讀

精彩推薦
272
主站蜘蛛池模板: 5xsq在线视频 | 国产一级爱c视频 | 热re91久久精品国产99热 | 成年免费观看视频 | 久久精品探花 | 精品一区二区三区在线视频 | 欧美一级美国一级 | 色视频在线观看 | qyl在线视频精品免费观看 | 91精品国产91久久久久久吃药 | 中文字幕精品亚洲 | 亚洲精品tv久久久久久久久久 | 99久久久精品国产一区二区 | 毛片在哪看 | 97中文字幕第一一一页 | 欧美性a视频 | 亚洲一区二区三区日本久久九 | 午夜精品福利视频 | 久久久久久久久久91 | 免费黄色免费 | 久久久婷婷一区二区三区不卡 | 日日夜av | 毛片视频网站在线观看 | 国产成年人视频 | 国产手机在线视频 | 伦一区二区三区中文字幕v亚洲 | 欧美日韩亚洲精品一区二区三区 | 成人资源在线观看 | 精品人成 | 免费黄色一级网站 | 成人午夜在线免费观看 | 全黄性性激高免费视频 | 美女视频黄a视频免费全过程 | 视频一区二区三区在线播放 | 少妇一级淫片免费放4p | 国内精品伊人久久久久网站 | 黄色片在线免费播放 | 久久精品23 | 91快色| 国产成人自拍视频在线观看 | 免费观看视频91 |