定義:一個類有且僅有一個實例,并且自行實例化向整個系統提供
應用:像Windows的任務管理器,做網站訪問次數統計(當一個類需要頻繁應用銷毀操作時單例比較適合)
優點:節約內存;限制了實例的個數,有利于Java垃圾回收
懶漢式:延遲加載,省資源,不加同步鎖可能造成并發,加同步鎖訪問處理效率變慢(推薦使用靜態內部類)
public class Singleton {
private static Singleton singleton;
private Singleton() {
}
public static synchronized Singleton getSingleton() {
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}
}
②餓漢式:線程安全,多個線程進行訪問時不會實例化多個對象;
缺點是無論是否用到該實例都會被初始化,無故的開銷變大
public class Singleton2 {
private static Singleton2 singleton2 = new Singleton2();
private Singleton2() {
}
public static Singleton2 getsingleton2() {
return singleton2;
}
}