更好的單例(Singleton)實現方式

今天從網上看到一個蠻好的Singleton模式的實現方式
下面是經典的實現方式,使用Lazy load方式。
public class Singleton {

 
static Singleton instance;

  
public static synchronized Singleton getInstance() {
    
if (instance == null)
      instance 
== new Singleton();
    
return instance;
  }


}


synchronized關鍵字加在getInstance上,也就是說每次調用getInstance都會收到synchronized的影響。
下面是Bob Lee想出來的一種新辦法。
public class Singleton ...{

  
static class SingletonHolder {
    
static Singleton instance = new Singleton();
  }


  
public static Singleton getInstance() {
    
return SingletonHolder.instance;
  }


}


這種方式更優雅,並且減少了synchronized的影響。
 
發佈了63 篇原創文章 · 獲贊 24 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章