使用場景:
package com.test;
public class singleton_innerclass
//私有構造方法
private singleton_innerclass() {}
//獲得物件例項
public static singleton_innerclass getinstance()
}
優點:
1.採用靜態內部類的方式,作為單例,直接用classloader(jvm類載入機制)進行處理非同步加鎖問題,並減少記憶體消耗
2.懶載入(餓漢式),即延遲載入。
3.執行緒安全。
分析:
1.用靜態內部類只有在第一次使用才會被載入。
2.為解決併發,主要通過使用synchronized來加互斥鎖,進行同步控制。但某些情況下,jvm已經隱含的執行了同步,這些情況下就不用自己再來進行同步控制了。 |
1>由靜態初始化器(在靜態欄位上或static{}塊中的初始化其)初始化資料時。
2>訪問final欄位時。
3>在建立執行緒之前建立物件時。
4>執行緒可以看到他將要處理的物件時。
靜態內部類實現單例模式
new b.c b b new b b.c c b.new c public class singleton public synchronized static singleton getinstance return instance public static singleton getins...
單例模式 靜態內部類
靜態內部類是乙個很好的實現單例的方式 看 package cn.liz.syn public class staticinner 私有的靜態內部類 private static class inner 公共的 獲取例項的方法 public static staticinner getinstance...
單例模式 靜態內部類
1 2 單例模式 靜態內部類3 4public class singletontest0711 1213 14 靜態內部類實現方式 15 16class singleton 2324 25 2.寫乙個靜態內部類,直接返回singleton 26 27private static class sing...