Java單例模式總結

2021-08-31 23:43:10 字數 1046 閱讀 9599

懶漢模式:在需要使用物件時,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一書中把單例模式歸類為 建立型 模式,意圖是在表明單例物件承擔了其他物件所要依賴的職責。單例模式的優點 在...