最安全的單例模式--java使用內部類實現單例模式
阿新 • • 發佈:2018-12-26
實現類
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對一個類的初始化會做限制,同一時間只會允許一個執行緒去初始化一個類,這樣就從虛擬機器層面避免了大部分單例實現的問題,可以嘗試下