當呼叫getinstance時,內部類被例項化,由於類變數被static修飾,導致變數成為類變數,為類所共有(只存在乙個),保證了執行緒安全
public
class staticsingle
public
static staticsingle getinstance()
}
這樣寫會存在一定的問題,存在什麼問題呢?
解決辦法:
邏輯判斷是否被例項,例項了就要丟擲異常終止建立過程
private
static
boolean instance=false;
private
staticsingle()else
}}
重寫readresolve方法
public object readresolve()
單例模式不單例注意事項
我們一般的單例模式是這樣實現的 publicclasssingletonclass returninstance privatesingletonclass 在多執行緒的情況下,如果兩個執行緒同時執行到if instance null 的裡面,則該單例模式就不再單例了!解決方案 publicclas...
單例模式 單例模式
餓漢式 急切例項化 public class eagersingleton 2.宣告靜態成員變數並賦初始值 類初始化的時候靜態變數就被載入,因此叫做餓漢式 public static eagersingleton eagersingleton new eagersingleton 3.對外暴露公共的...
單例 單例模式
簡單的實現乙個單例 instancetype sharedinstance return instance 真正的單例模式 myclass sharedinstance return instance id allocwithzone nszone zone return nil id copywi...