單例模式
兩種寫法:
一.懶漢式:
最簡單的寫法:怕多執行緒
中間的寫法:無法實現多執行緒
雙鎖的寫法:實現了執行緒安全,並保留了多執行緒。
特點:1、單例類只能有乙個例項。
2、單例類必須自己建立自己的唯一例項。
3、單例類必須給所有其他物件提供這一例項。
public class user
private static user user=null;
//靜態工廠方法
public static user getuser()
return user; } }以上懶漢式單例的實現沒有考慮執行緒安全問題,它是執行緒不安全的,併發環境下很可能出現多個user例項,要 實現執行緒安全如下 第一種在getuser方法上加同步:
public class user
private synchronized static user user=null;
//靜態工廠方法
public static user getuser()
return user; } }第二種是雙重檢查鎖定
package com.zhiyou100.model;
public class user
//3 建立我們的user工廠
public static user getuser() }}
return user;
//如果user等於空就建立乙個新的user,否則直接返回user
}二.餓漢式:
package com.zhiyou100.model;
public class user
//3 建立我們的user工廠
public static user getuser() } }
return user;
//如果user等於空就建立乙個新的user,否則直接返回user
}懶漢式和餓漢式的區別:
1.餓漢就是類一旦載入,就把單例初始化完成,保證getinstance的時候,單例是已經存在的了
懶漢比較懶,只有當呼叫getinstance的時候,才回去初始化這個單例。
2.執行緒安全:
餓漢式天生就是執行緒安全的,可以直接用於多執行緒而不會出現問題,
懶漢式本身是非執行緒安全的.
多例模式:
1 、多例類可以有多個例項
2 、多例類必須能夠自我建立並管理自己的例項,並向外界提供自己的例項。
public class people
public static people getpeople(string ***)
if(***.equals("woman"))
return null;
} } }執行緒安全的寫法:
package com.zhiyou100.model;
public class people
public static people getpeople(string ***) }
return man;
}else }
if(***.equals("woman")) }
return woman; }
else }
return null;
} }
單例和多例
單例模式 兩種寫法 一.懶漢式 最簡單的寫法 怕多執行緒 中間的寫法 無法實現多執行緒 雙鎖的寫法 實現了執行緒安全,並保留了多執行緒。特點 1 單例類只能有乙個例項。2 單例類必須自己建立自己的唯一例項。3 單例類必須給所有其他物件提供這一例項。public class user private ...
spring 單例與多例
id student class com.ly.entity.student init method init destroy method destroy scope singleton bean scope prototype 為多例 預設單例模式 singleton 單例模式 框架啟動時,就例...
JavaSE 單例和多例
一 單例設計模式 定義 乙個類只能允許例項化乙個物件 餓漢式單例 public class test public static test getinstance public void print 特點 立即初始化 餓漢式單例 立即載入,執行緒安全,記憶體可能會浪費 懶漢式單例 public cl...