##查看代碼:https://gitee.com/jly521/singleton.gitgit
單例模式(Singleton)安全
- 應用場景:保證一個類僅有一個實例,並提供一個訪問它的全局訪問點
- Spring 中的單例模式完成了後半句話,即提供了全局的訪問點BeanFactory
- 但沒有從構造器級別去控制單例,這是由於Spring 管理的是是任意的Java 對象
- Spring 下默認的Bean 均爲單例
- 經常使用單例模式寫法:餓漢式、懶漢式、註冊式、序列化
餓漢模式網絡
- 在類加載的時候就當即初始化,而且建立單例對象
- 優勢:沒有加任何的鎖、執行效率比較高, //在用戶體驗上來講,比懶漢式更好
- 缺點:類加載的時候就初始化,無論你用仍是不用,我都佔着空間 //浪費了內存,有可能佔着茅坑不拉屎
- 絕對線程安全,在線程還沒出現之前就是實例化了,不可能存在訪問安全問題
懶漢模式性能
lazy1:線程
lazy2:3d
lazy3:對象
- 特色:在外部類被調用的時候內部類纔會被加載
- 內部類必定是要在方法調用以前初始化
- 巧妙地避免了線程安全問題
- 這種形式兼顧餓漢式的內存浪費,也兼顧synchronized性能問題
- 完美地屏蔽了這兩個缺點
- 史上最牛B的單例模式的實現方式
序列化::blog
序列化內存
- 就是說把內存中的狀態經過轉換成字節碼的形式
- //從而轉換一個IO流,寫入到其餘地方(能夠是磁盤、網絡IO)
- //內存中狀態給永久保存下來了
反序列化get
- //講已經持久化的字節碼內容,轉換爲IO流
- //經過IO流的讀取,進而將讀取的內容轉換爲Java對象
- //在轉換過程當中會從新建立對象new
註冊模式::