多線程下單例
阿新 • • 發佈:2018-03-05
系統 http 又能 就是 log DC read locking 其他
1.什麽是單例模式?
單例模式是為確保一個類只有一個實例,並為整個系統提供一個全局訪問點的一種模式方法。
單例的特點:
在任何情況下,單例類永遠只有一個實例存在 單例需要有能力為整個系統提供這一唯一實例
餓漢和懶漢單例
1.餓漢式單例是指在方法調用前,實例就已經創建好了
2. 懶漢式單例是指在方法調用獲取實例時才創建實例,因為相對餓漢式顯得“不急迫”,所以被叫做“懶漢模式”
3.使用靜態內置類實現單例模式
DCL解決了多線程並發下的線程安全問題,其實使用其他方式也可以達到同樣的效果
以上代碼就是使用靜態內置類實現了單例模式,這裏將前面驗證多線程下執行情況的MyThread類放入到org.mlinge.s06包下運行
4.Double Check Locking 雙檢查鎖機制
為了達到線程安全,又能提高代碼執行效率,我們這裏可以采用DCL的雙檢查鎖機制來完成
5.序列化與反序列化的單例模式實現
靜態內部類雖然保證了單例在多線程並發下的線程安全性,但是在遇到序列化對象時,默認的方式運行得到的結果就是多例的。
序列化與反序列化測試代碼:
多線程下單例