最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 高并發(fā)的三種實現(xiàn)案例詳解

 更新時間:2021年08月31日 14:09:03   作者:java_xth  
這篇文章主要介紹了Java 高并發(fā)的三種實現(xiàn)案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下

提到鎖,大家肯定想到的是sychronized關鍵字。是用它可以解決一切并發(fā)問題,但是,對于系統(tǒng)吞吐量要求更高的話,我們這提供幾個小技巧。幫助大家減小鎖顆粒度,提高并發(fā)能力。

初級技巧-樂觀鎖

樂觀鎖使用的場景是,讀不會沖突,寫會沖突。同時讀的頻率遠大于寫。

 悲觀鎖的實現(xiàn)

悲觀的認為所有代碼執(zhí)行都會有并發(fā)問題,所以將所有代碼塊都用sychronized鎖住

樂觀鎖的實現(xiàn)

樂觀的認為在讀的時候不會產生沖突為題,在寫時添加鎖。所以解決的應用場景是讀遠大于寫時的場景。

中級技巧-String.intern()

樂觀鎖不能很好的解決大量的寫沖突的問題,但是很多場景下,鎖只是針對某個用戶或者某個訂單。 比如一個用戶先創(chuàng)建session,才能進行后面的操作,但是由于網(wǎng)絡的問題,創(chuàng)建session的請求和后續(xù)請求幾乎同時到達,而并行線程可能會先處理后面的請求。一般情況需要對用戶sessionMap加鎖,比如上面的樂觀鎖。在這樣的場景下,可以將鎖限定在用戶本身上,即原來的

這個比較類似行鎖和數(shù)據(jù)庫表鎖的概念。顯然行鎖的并發(fā)能力比表鎖的高很多。

實用String.intern();是這種方式的具體實現(xiàn)。類String維護了一個字符串池。當調用intern方法時,如果池已經包含一個等于此String對象的字符串(該對象由equals(Object)方法確定),則返回池中的字符串??梢姡擲tring 相同時,總返回同一個對象,因此就實現(xiàn)了對同一用戶加鎖。由于所的顆粒度局限于具體用戶,使得系統(tǒng)獲得最大程度的并發(fā)。

CopyOnWriteMap?

既然說到了“類似于數(shù)據(jù)庫中的行鎖的概念”,就不得不提一下MVCC,Java中CopyOnWrite類實現(xiàn)了MVCC。Copy On Write是這樣一種機制。當我們讀取共享數(shù)據(jù)的時候,直接讀取,不需要同步。當我們修改數(shù)據(jù)的時候,我們就把當前數(shù)據(jù)Copy一份副本,然后在這個副本 上進行修改,完成之后,再用修改后的副本,替換掉原來的數(shù)據(jù)。這種方法就叫做Copy On Write。

但是,,,JDK并沒有提供CopyOnWriteMap,為什么?下面有個很好的回答,那就是已經有了ConcurrentHashMap,為什么還需要CopyOnWriteMap?

高級技巧 - 類ConcurrentHashMap

String.inter()的缺陷是類 String 維護一個字符串池是放在JVM perm區(qū)的,如果用戶數(shù)特別多,導致放入字符串池的String不可控,有可能導致OOM錯誤或者過多的Full GC。怎么樣能控制鎖的個數(shù),同時減小粒度鎖呢?直接使用Java ConcurrentHashMap?或者你想加入自己更精細的控制?那么可以借鑒ConcurrentHashMap的方式,將需要加鎖的對象分為多個bucket,每個bucket加一個鎖,偽代碼如下:

到此這篇關于Java 高并發(fā)的三種實現(xiàn)案例詳解的文章就介紹到這了,更多相關Java 高并發(fā)的三種實現(xiàn)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java中super和this的用法詳解

    Java中super和this的用法詳解

    這篇文章主要介紹了Java中super和this的用法詳解,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • java正則表達式獲取指定HTML標簽的指定屬性值且替換的方法

    java正則表達式獲取指定HTML標簽的指定屬性值且替換的方法

    下面小編就為大家?guī)硪黄猨ava正則表達式獲取指定HTML標簽的指定屬性值且替換的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • java LRU算法介紹與用法示例

    java LRU算法介紹與用法示例

    這篇文章主要介紹了java LRU算法,簡單介紹了LRU算法的概念并結合實例形式分析了LRU算法的具體使用方法,需要的朋友可以參考下
    2017-09-09
  • Java零基礎教程之Windows下安裝、啟動Tomcat服務器方法圖解(免安裝版)

    Java零基礎教程之Windows下安裝、啟動Tomcat服務器方法圖解(免安裝版)

    這篇文章主要介紹了Windows系統(tǒng)下安裝、啟動、注冊服務、停止 Tomcat操作的所有方法,本文通過圖文并茂的方式給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2016-09-09
  • Spring事務管理原理及方法詳解

    Spring事務管理原理及方法詳解

    這篇文章主要介紹了Spring事務管理原理及方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • JVM類加載機制原理及用法解析

    JVM類加載機制原理及用法解析

    這篇文章主要介紹了JVM類加載機制原理及用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • 淺談Springboot下引入mybatis遇到的坑點

    淺談Springboot下引入mybatis遇到的坑點

    這篇文章主要介紹了Springboot下引入mybatis遇到的坑點,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java字符串排序的幾種實現(xiàn)方式

    Java字符串排序的幾種實現(xiàn)方式

    這篇文章主要給大家介紹了關于Java字符串排序的幾種實現(xiàn)方式, 使用Java平臺進行字符串排序被認為是一件簡單的工作,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • Java集合中的TreeMap解讀

    Java集合中的TreeMap解讀

    這篇文章主要介紹了Java集合中的TreeMap解讀,TreeMap可以傳入一個實現(xiàn)了 Comparator接口的一個匿名內部類,匿名內部類里面我們仍然可以去指定添加我們的鍵值對的這種排序規(guī)則,需要的朋友可以參考下
    2023-09-09
  • java數(shù)字和中文算數(shù)驗證碼的實現(xiàn)

    java數(shù)字和中文算數(shù)驗證碼的實現(xiàn)

    這篇文章主要介紹了java數(shù)字和中文算數(shù)驗證碼的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07

最新評論

布尔津县| 江源县| 安达市| 泗阳县| 临漳县| 利川市| 友谊县| 寿光市| 台山市| 鹿泉市| 北安市| 汽车| 阿拉善左旗| 新宁县| 江门市| 元氏县| 康定县| 安宁市| 柘城县| 苍山县| 大宁县| 都安| 林芝县| 无棣县| 大洼县| 洛川县| 东兰县| 枣庄市| 双柏县| 信阳市| 衡东县| 繁峙县| 张掖市| 栖霞市| 清新县| 太原市| 馆陶县| 阳原县| 琼结县| 新巴尔虎左旗| 闸北区|