設計模式(Java)-003-單例模式-餓漢式
阿新 • • 發佈:2019-01-03
餓漢式(執行緒安全、呼叫效率高、但是不能延遲載入)
1.執行緒安全:在類載入時完成物件的建立
2.呼叫效率高:getInstance沒有任何同步限制
3.不能延遲載入:正是因為在類載入時就完成了物件的建立步驟:
1.構造器私有
2.提供靜態私有的物件
3.提供一個靜態公有方法,獲取靜態私有物件說明:
- static屬性會在類裝載時進行初始化,此時並不會設計到多執行緒問題。虛擬機器保證只會裝載一次該類,所以是執行緒安全的。
2.如果只是載入類本身,並不需要使用到這個單例的物件,那麼會造成資源浪費。
- static屬性會在類裝載時進行初始化,此時並不會設計到多執行緒問題。虛擬機器保證只會裝載一次該類,所以是執行緒安全的。
測試程式碼
package top.itcourse.gof23;
/**
* 餓漢式單例模式建立步驟:
* 1.構造器私有
* 2.提供靜態私有的物件
* 3.提供一個靜態公有方法,獲取靜態私有物件
*
* 說明:
* 1.物件建立時機:
* static屬性會在類裝載時進行初始化,此時並不會設計到多執行緒問題。虛擬機器保證只會裝載一次該類,
* 所以是執行緒安全的。
* 2.缺點:
* 如果只是載入類本身,並不需要使用到這個單例的物件,那麼會造成資源浪費。
*/
public class SingletonHungry {
// 1.私有構造器
private SingletonHungry() {
}
// 2.提供靜態私有的物件
private static SingletonHungry sh = new SingletonHungry();
// 3.提供一個靜態公有方法,獲取靜態私有物件
public static SingletonHungry getInstance() {
return sh;
}
}
其它
原始碼下載:
關注下方微信公眾號,
回覆:
DM.code