單例模式---靜態內部類
阿新 • • 發佈:2018-12-23
package javaTestpack; //Fil內沒有static屬性,則不會像餓漢式那樣立即載入物件 class Sign{ //只有使用Fil類裡getInstace()方法時才載入內部類並建立單例 且執行緒安全 //呼叫效率高 且實現了延時載入 private static class SignInstance{ private static final Sign instance = new Sign(); } //私有化構造器 private Sign(){} public static Sign getInstance(){ return SignInstance.instance; } } public class Test{ public static void main(String[] args) { Sign s1 = Sign.getInstance(); System.out.println(s1); Sign s2 = Sign.getInstance(); System.out.println(s2); } }
執行結果:
[email protected]
[email protected]
結論:
1.只有真正呼叫getInstance()時才會載入靜態內部類
2.載入類時執行緒安全
3.instance是static final型別 保證記憶體中只有這樣一個例項,而且只能被賦值一次
4.兼備了併發高效呼叫和延遲載入的優勢