單例對象(Singleton)是一種常用的設計模式。在Java應用中,單例對象能保證在一個JVM中,該對象只有一個實例存在。
這樣的模式有幾個好處:
1、某些類創建比較頻繁,這是一筆很大的系統開銷。
2、省去了new操作符,降低了系統內存的使用頻率,減輕GC壓力。
一、懶漢模式
public class Singleton {
// 持有私有靜態實例,防止被引用,此處賦值爲null,目的是實現延遲加載
private static Singleton instance = null;
//私有構造方法,禁止私自創建對象
private void Singleton(){}
// 創建單例對象
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class){// 持有類鎖,保證線程安全
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
二、餓漢模式
public class Singleton {
// 服務器啓動時創建
private static Singleton instance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return instance;
}
}