1. 程式人生 > >最安全的單例模式--java使用內部類實現單例模式

最安全的單例模式--java使用內部類實現單例模式

實現類

public class Singleton {

    private static class LazyHolder {    
       private static final Singleton INSTANCE = new Singleton();    
     }    
     private Singleton (){}    
     public static final Singleton getInstance() {    
        return LazyHolder.INSTANCE;    
     } 

}

測試

public class Test {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Singleton singleton1 = Singleton.getInstance();
        Singleton singleton2 = Singleton.getInstance();
        if (singleton1 == singleton2)
            System.out.println("same");
    }
}

說明

單例模式實現方式有好多種,但大部分都會有多執行緒環境下的問題;使用內部類可以避免這個問題,因為在多執行緒環境下,jvm對一個類的初始化會做限制,同一時間只會允許一個執行緒去初始化一個類,這樣就從虛擬機器層面避免了大部分單例實現的問題,可以嘗試下