public
class singleton //私有化建構函式,防止new物件
public
static singleton getinstance()
}
public
class singleton
public
static singleton getinstance()
return intance;
}}
這種模式為了執行緒安全需要雙重檢查,第二層檢查的目的是防止一種情況出現:假設有a執行緒進到同步**塊裡面,但還沒執行完intance = new singleton(); 此時intance為null,如果這時b執行緒獲取單例會走到synchronize這裡,因為同步的原因b執行緒會阻塞等待,當a執行緒執行完後intance已經指向乙個singleton物件了,這時b執行緒進入到同步**塊,如果不加第二個條件,b執行緒又會建立乙個新物件,這就不符合單例的原則了。
public
class singleton
public
static singleton getinstance() }}
return intance;
}}
推薦使用此方法實現單例。當第一次呼叫getinstance()方法時,虛擬化會載入singletonholder類,因為它是靜態內部類可以保證內部物件的唯一,並且執行緒安全
public
class singleton
public
static singleton getinstance()
private
static
class singletonholder
}
我們使用hashmap來儲存需要的單例型別,在程式開始呼叫registerservice來註冊各種單例型別,當我們需要單例物件時使用getintance()從hashmap中獲取單例型別
public
class singlemanager
public
static
void
registerservice(string key, object obj)
public
static
object
getintance(string key)
}
設計模式 單例模式的幾種實現方式
1.概述 單例模式 簡單的說就是可以確保只產生乙個類例項,讓多個使用者或者多個執行緒同時使用這乙個例項,而不需要每次使用都建立一次物件。2.優缺點和適用場景 3.幾種不同形式的單例模式 class singleclass public static singleclass getinstance 這...
設計模式 8種方式實現單例模式
1 餓漢式的兩種寫法 餓漢式的特點 在獲取單例物件之前物件就已經建立完成了。package com.juc程式設計.volatile0 public class singleeh public static singleeh getsingleeh 2.靜態 塊 private static fin...
單例模式的多種方式與選擇
當我們使用單例模式的時候,在實際需求場景中。單例模式可以給我們帶來更好的資源優化。但是同時,他也帶來了執行緒安全問題,下面使用了7中方式的單例模式,在實際場景中,我們往往不會簡簡單單的使用餓漢模式或者懶漢模式。public class test public static singleton get...