国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

相親網(wǎng)站怎么做企業(yè)線上培訓(xùn)平臺有哪些

相親網(wǎng)站怎么做,企業(yè)線上培訓(xùn)平臺有哪些,如何用自己電腦做網(wǎng)站服務(wù)器,海外購物電商平臺單例模式是設(shè)計模式之一,能保證某個類在程序中只存在唯一一份實例,而不會創(chuàng)建出多個實例 單例模式的具體實現(xiàn)方法有很多,最常見的是 “餓漢” 和 “懶漢” 兩種。 餓漢模式 class Singlenton{private static Singlenton instance new Sin…

單例模式是設(shè)計模式之一,能保證某個類在程序中只存在唯一一份實例,而不會創(chuàng)建出多個實例

單例模式的具體實現(xiàn)方法有很多,最常見的是 “餓漢”“懶漢” 兩種。

餓漢模式

class Singlenton{private static Singlenton instance = new Singlenton();public static Singlenton getInstance(){return instance;}//在此類的外面無法調(diào)用構(gòu)造方法,無法創(chuàng)建實例private Singlenton(){}
}

懶漢模式

類加載的時候不創(chuàng)建實例,第一次使用的時候才創(chuàng)建實例

單線程版

class Singletonlazy{private static Singletonlazy instance = null;public static Singletonlazy getInstance(){if(instance==null){instance = new Singletonlazy();}return instance;}private Singletonlazy(){}
}

多線程版

相比單線程版,多線程版考慮了線程安全問題

線程安全問題發(fā)生在首次創(chuàng)建實例時,可能多個線程同時調(diào)用getInstance方法,就可能導(dǎo)致創(chuàng)建了多個實例。

加上 synchronized 可以改善線程安全問題

class Singletonlazy{private static Singletonlazy instance = null;private static Object locker = new Object();public static Singletonlazy getInstance(){synchronized (locker){if(instance==null){instance = new Singletonlazy();}}return instance;}private Singletonlazy(){}
}

多線程版優(yōu)化

上面的代碼雖然說解決了線程安全問題,但是只要調(diào)用了getInstance方法,就會觸發(fā)加鎖操作,產(chǎn)生阻塞,影響性能。

我們想要優(yōu)化,就要在加鎖之前判定一下是否需要加鎖。

外層的if(instance==null)是判斷實例有沒有創(chuàng)建

內(nèi)層的if(instance==null)進一步判斷實例有沒有創(chuàng)建,因為在外層 if 和加鎖之間,切換了線程并創(chuàng)建了實例,此時切換到原來的線程如果沒有判斷,就會創(chuàng)建出多個實例。

但是光加了一個外層 if 還不夠,此時可能因為指令重排序引起的線程安全問題

instance = new Singletonlazy();分為三條指令
  1. 分配內(nèi)存空間
  2. 執(zhí)行構(gòu)造方法
  3. 內(nèi)存空間的地址賦值給引用變量

編譯器可能按照 1 2 3 的順序來執(zhí)行,也可能按照 1 3 2 的順序執(zhí)行

當(dāng)按照 1 3 2的順序執(zhí)行時,由于 3 是把內(nèi)存空間的地址賦值給引用變量,所以此時 instance現(xiàn)在不為 null 了,此時如果其他線程判斷外層 if 時,由于instance不為null了,所以直接返回instance,但是此時instance指向沒有初始化,上面值全是0的內(nèi)存,此時getInstance到的就是個錯誤的值,會引發(fā)一系列不可預(yù)期的情況。

此時,我們用volatile 關(guān)鍵字告知編譯器此變量指令不可重排序即可解決。

class Singletonlazy{private static volatile Singletonlazy instance = null;private static Object locker = new Object();public static Singletonlazy getInstance(){if(instance==null){synchronized (locker){if(instance==null){instance = new Singletonlazy();}}}return instance;}private Singletonlazy(){}
}

http://aloenet.com.cn/news/40904.html

相關(guān)文章:

  • 企業(yè)信息管理系統(tǒng)的發(fā)展歷程網(wǎng)站seo優(yōu)化方法
  • 網(wǎng)站建設(shè) 珠海營銷培訓(xùn)課程有哪些
  • 城關(guān)區(qū)建設(shè)局網(wǎng)站百度廣告費一般多少錢
  • 手機網(wǎng)站開發(fā) pdf最新旅游熱點
  • 王妃貌美還狠兇搜索引擎優(yōu)化的作用
  • 家裝效果圖seo管理系統(tǒng)培訓(xùn)運營
  • 網(wǎng)站制作和網(wǎng)頁制作區(qū)別上海百度推廣優(yōu)化排名
  • flash可以做網(wǎng)站seo優(yōu)化運營
  • 柳市那些做網(wǎng)站的公司定制網(wǎng)站和模板建站
  • 做網(wǎng)站經(jīng)常加班還是app武漢seo優(yōu)化
  • 商業(yè)網(wǎng)站建設(shè)視頻教程關(guān)鍵詞排名優(yōu)化教程
  • 公司網(wǎng)站建設(shè)的系統(tǒng)功能需求分析安徽seo推廣
  • 和平區(qū)網(wǎng)站建設(shè)房地產(chǎn)估價師考試
  • 經(jīng)營性網(wǎng)站必須備案排名優(yōu)化關(guān)鍵詞
  • 這么做3d展示網(wǎng)站優(yōu)化網(wǎng)站排名的方法
  • 網(wǎng)站建設(shè)完整南寧白帽seo技術(shù)
  • 手工企業(yè)網(wǎng)站模板企業(yè)網(wǎng)站制作公司
  • 淮安哪里有做網(wǎng)站的北京網(wǎng)站seo技術(shù)廠家
  • 網(wǎng)站改版方案原則百度關(guān)鍵詞搜索量排名
  • 網(wǎng)站建設(shè)財務(wù)上怎么處理寧波seo推廣推薦
  • 網(wǎng)站怎么解析到域名推廣類軟文
  • 免費word模板下載哪個網(wǎng)站網(wǎng)站建設(shè)方案書范文
  • wordpress 整站音樂看廣告收益的正規(guī)平臺
  • 貴溪市城鄉(xiāng)建設(shè)局網(wǎng)站推廣公眾號的9種方法
  • 網(wǎng)站建設(shè)和購買區(qū)別網(wǎng)絡(luò)推廣100種方法
  • 動態(tài)網(wǎng)站建設(shè)的一般步驟免費的h5制作網(wǎng)站
  • wordpress恢復(fù)源代碼willfast優(yōu)化工具下載
  • 電子商務(wù)網(wǎng)站設(shè)計畢業(yè)設(shè)計論文競價推廣員月掙多少
  • 網(wǎng)站怎么做優(yōu)化排名推廣下載
  • 福州外包加工網(wǎng)廈門seo優(yōu)化推廣