1. 程式人生 > >Java單例模式及延遲載入

Java單例模式及延遲載入

單例模式是 軟體開發中非常重要的模式之一。絕大多數的軟體專案中都會用到單例模式。單例模式應用的好與壞在高併發訪問的情況下效能差異較為明顯。下面我們來看一下單例模式的具體解釋。
描述:單例模式許多時候是一個全域性的靜態共享物件,為了保證其效能,它應該是無鎖的。
下面我們來看一下具體的實現

基本實現方式:
該方式的問題是無法控制物件的載入時間。該寫法在程式啟動時就已經載入物件了。

public class Singleton {

    private static Singleton inst = new Singleton();

    private Singleton() {
    }

    public
static Singleton getInstance() { return inst; } }

第二種方式(不推薦):
這種方式雖能實現延遲載入但是效能很差。這種方式有時會用來定製產生N個例項。
public class Singleton {

private static Singleton inst;

private Singleton() {
}

public static synchronized Singleton getInstance() {
    if(inst == null) inst = new Singleton();
    return inst;
}

}
第三種方式(推薦):
效能最好的一種實現方式,系統啟動時內部類是不會載入的。但當內部類第一次被呼叫時,則會成功初始化例項。

public class Singleton {


    private Singleton() {
    }

    private static class SingletonHolder {
        private static final Singleton inst = new Singleton();
    }

    public static Singleton getInstance() {
        return
SingletonHolder.inst; } }