懶漢模式:在需要使用物件時,new 乙個出來,延遲載入,需要時才生成
缺點:存在多執行緒問題,可能會例項化多個物件。執行緒1在new物件之前,執行緒2已經開始進行null判斷導致。加入volatile(禁止指令重排序)和synchronized(同步)修飾雖然可以在一定程度上解決多執行緒安全問題,但是效率低下。
// 懶漢模式
public class singleton
public static singleton getinstance()
return instance;
}}
餓漢模式:在一開始就new出物件例項,執行緒安全
缺點:不能延時載入,可能浪費資源。
// 餓漢模式
public class singleton
public static singleton getinstance()
}
使用內部類實現執行緒安全和延遲載入:
// 內部類
public class singleton
private singleton()
public static singleton getinstance()
}
通過列舉實現單例:
1、執行緒安全(餓漢模式)
2、不會因為序列化而產生新的例項(因為它自己實現了readresolve方法)
3、防止反射攻擊(enum類有abstract修飾,不可例項化)
// 列舉示例1
enum singletondemo
}// 列舉示例2
public class myobject
public resource getresource()
}public static resource getresource()
}
java單例模式
第一種方法 public class singleton private static singleton singleton new singleton public static singleton getinstance 第二種方法 public class singleton private...
Java 單例模式
單例模式特點 1 單例類只能有乙個例項。2 單例類必須自己自己建立自己的唯一例項。3 單例類必須給所有其他物件提供這一例項。一 餓漢式單例 基於classloder機制避免了多執行緒的同步問題,使用較多 public class singleton 這裡提供了乙個供外部訪問本class的靜態方法,可...
Java單例模式
單例模式的意圖是為了確保乙個類有且僅有乙個例項,並為它提供乙個全域性訪問點。單例模式通過隱藏建構函式,提供物件建立的唯一入口點,從而將類的職責集中在類的單個例項中。design patterns一書中把單例模式歸類為 建立型 模式,意圖是在表明單例物件承擔了其他物件所要依賴的職責。單例模式的優點 在...