手寫單例(餓漢式)
1 class SingleObj{ 2 //私有變量 3 private static SingleObj single=new SingleObj(); 4 //私有構造函數 不能被實例化 5 private static SingleObj(){} 6 7 public static SingleObj getInstance(){ 8 return single; 9 } 10 }
優點:沒有加鎖,執行效率更高
缺點:類加載時就初始化,浪費內存
懶漢式

1 class Singleton{ 2 private static Singleton single; 3 4 private static Singleton(){} 5 6 public static synchronized Singleton getInstance(){ 7 if(single==null) 8 single =new Singleton(); 9 return single; 10 } 11 }
優點:第一次調用才初始化,避免浪費內存
缺點:加鎖了執行效率低