說說 餓漢式與懶漢式
餓漢式:是執行緒安全的;類載入的時候,就會生成例項物件,未支援 延遲載入,在還未用到之前,一直占用記憶體。
用內部類的形式實現單例,既可以解決延遲載入,也不必使用同步關鍵字
public class staticsingleton
private static class singletonholder {
private static staticsingleton instance = new staticsingleton();
public static staticsingleton getinstance() {
return singletonholder.instance;
延遲載入:staticsingleton類被載入時,不會執行內部類的方法,因而,不會立即返回具有實質內容的例項物件。這時的物件,我暫且將其稱為空物件。
這就好比,乙個實體類物件entity,即使被執行了例項化操作即entity entity = new entity(),但此時的entity僅僅是entity的乙個模型,沒有資料填充。只有為該entity物件進行了賦值,才是乙個充實的實體物件。上面的單例正是這種感覺,staticsingleton類載入時,是不會生成充實物件的。而只有到了,真正呼叫getinstance()時,才會去進行資料填充(真正生成『具有內容』的物件例項),轉變成實質物件。
執行緒安全:單執行緒與多執行緒執行相同的程式,所得的結果是一致的,那麼我們稱程式是執行緒安全的。空物件在類載入時已經生成,在呼叫getinstance()時,則轉變成實質物件。因而,是執行緒安全的
優化單例模式
單例模式 用於產生物件的具體例項,可以確保系統中乙個類只產生乙個例項。好處是,省略建立物件所花費的時間 減少系統記憶體的使用率,降低gc壓力,縮短gc停頓時間。餓漢模式 public class singleton private static singleton instance new sing...
Java效能優化之設計模式 單例模式
單例模式是一種常用的軟體設計模式,常被用於乙個系統中乙個類只存在乙個例項的場合,從而方便對例項個數的控制並節約系統資源。簡而言之,單例模式就是保證乙個類最多只能存在乙個例項物件。使用場景 1 對應於頻繁使用的物件,可以省略建立物件所花費的時間,對於一些大型物件,是一筆可觀的開銷。2 由於減少了new...
java單例模式
第一種方法 public class singleton private static singleton singleton new singleton public static singleton getinstance 第二種方法 public class singleton private...