摘要:單例模式要點私有的構造方法指向?qū)嵗乃接徐o態(tài)引用獲取實例對象的公有靜態(tài)方法餓漢模式非線程安全私有化構造函數(shù)懶漢模式非線程安全私有化構造函數(shù)雙重線程鎖檢查單例線程安全私有化構造函數(shù)枚舉單例更多關于的文章請戳這里您的留言意見是對我最大的支持我的
單例模式要點
私有的構造方法
指向?qū)嵗乃接徐o態(tài)引用
獲取實例對象的公有靜態(tài)方法
餓漢模式(非線程安全)public class SingleTon { private SingleTon(){}//私有化構造函數(shù) private static final SingleTon singleTon=new SingleTon(); public static SingleTon getInstance(){ return singleTon; } }懶漢模式(非線程安全)
public class SingleTon { private SingleTon() {}//私有化構造函數(shù) private static SingleTon singleTon; public static SingleTon getInstance() { if (singleTon == null) singleTon = new SingleTon(); return singleTon; } }雙重線程鎖檢查單例(線程安全)
public class SingleTon { private SingleTon() {}//私有化構造函數(shù) private static volatile SingleTon singleTon; public static SingleTon getInstance() { if (singleTon == null){ synchronized (SingleTon.class){ SingleTon st=singleTon; if (st == null) { st=new SingleTon(); singleTon=st; } } } return singleTon; } }枚舉單例
public enum SingleTon{ Instance; }
我的文章列表
Email:sxh13208803520@gmail.com
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/66958.html
摘要:在寫單例模式的代碼之前,我們先簡單了解一下兩個知識點,關于類的加載順序和關鍵字。懶漢和餓漢在程序編寫上,一般將單例模式分為兩種,分別是餓漢式和懶漢式,餓漢式在類加載時就完成了初始化,所以類加載比較慢,但獲取對象的速度快。 定義 單例模式是比較常見的一種設計模式,目的是保證一個類只能有一個實例,而且自行實例化并向整個系統(tǒng)提供這個實例,避免頻繁創(chuàng)建對象,節(jié)約內(nèi)存。 單例模式的應用場景很多, 比如...
摘要:使用靜態(tài)類體現(xiàn)的是基于對象,而使用單例設計模式體現(xiàn)的是面向?qū)ο?。二編寫單例模式的代碼編寫單例模式的代碼其實很簡單,就分了三步將構造函數(shù)私有化在類的內(nèi)部創(chuàng)建實例提供獲取唯一實例的方法餓漢式根據(jù)上面的步驟,我們就可以輕松完成創(chuàng)建單例對象了。 前言 只有光頭才能變強 回顧前面: 給女朋友講解什么是代理模式 包裝模式就是這么簡單啦 本來打算沒那么快更新的,這陣子在刷Spring的書籍。在看...
摘要:餓漢模式線程安全,調(diào)用效率高,但是不能延時加載這樣做的好處是編寫簡單,但是無法做到延遲創(chuàng)建對象??紤]線程安全的寫法這種寫法考慮了線程安全,將對的判斷以及的部分使用進行加鎖。如此即可從語義上保證這種單例模式寫法是線程安全的。 餓漢模式 線程安全,調(diào)用效率高,但是不能延時加載 public class ImageLoader{ private static ImageLoade...
摘要:單例模式的懶漢實現(xiàn)線程安全通過設置同步方法,效率太低,整個方法被加鎖模擬在創(chuàng)建對象之前做一些準備工作使用上面的測試類,測試結(jié)果可以看到,這種方式達到了線程安全??梢哉f這種方式是實現(xiàn)單例模式的最優(yōu)解。 1. 什么是單例模式 單例模式指的是在應用整個生命周期內(nèi)只能存在一個實例。單例模式是一種被廣泛使用的設計模式。他有很多好處,能夠避免實例對象的重復創(chuàng)建,減少創(chuàng)建實例的系統(tǒng)開銷,節(jié)省內(nèi)存。 ...
摘要:缺點每次調(diào)用都有線程開銷延遲初始化單例默認構造方法為,避免用戶用構造出新對象獲取單例的靜態(tài)工廠同步方法延遲初始化單例使用同步方法保證多線程操作只實例化一個實力單例模式。 主要分為兩種: 直接初始化 延遲初始化 直接初始化 直接初始化final靜態(tài)成員 線程安全:JVM保證final靜態(tài)成員只會被初始化一次 公有靜態(tài)成員是個final域,直接引用成員獲取單例 /** * 公有靜態(tài)成...
閱讀 2569·2021-09-09 09:33
閱讀 2938·2019-08-30 15:56
閱讀 3207·2019-08-30 14:21
閱讀 959·2019-08-30 13:01
閱讀 955·2019-08-26 18:27
閱讀 3659·2019-08-26 13:47
閱讀 3532·2019-08-26 10:26
閱讀 1657·2019-08-23 18:38