麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > ConcurrentHashMap底層具體實現知道嗎?實現原理是什么?

ConcurrentHashMap底層具體實現知道嗎?實現原理是什么?

來源:千鋒教育
發布人:wjy
時間: 2022-09-19 11:38:18 1663558698

  JDK1.7

  首先將數據分為一段一段的存儲,然后給每一段數據配一把鎖,當一個線程占用鎖訪問其中一個段數據時,其他段的數據也能被其他線程訪問。

  在JDK1.7中,ConcurrentHashMap采用Segment + HashEntry的方式進行實現,結構如下:

  一個 ConcurrentHashMap 里包含一個 Segment 數組。Segment 的結構和HashMap類似,是一種數組和鏈表結構,一個 Segment 包含一個 HashEntry 數組,每個 HashEntry 是一個鏈表結構的元素,每個 Segment 守護著一個HashEntry數組里的元素,當對 HashEntry 數組的數據進行修改時,必須首先獲得對應的 Segment的鎖。

ConcurrentHashMap底層具體實現1

 

  1. 該類包含兩個靜態內部類 HashEntry 和 Segment ;前者用來封裝映射表的鍵值對,后者用來充當鎖的角色;

  2. Segment 是一種可重入的鎖 ReentrantLock,每個 Segment 守護一個HashEntry 數組里得元素,當對 HashEntry 數組的數據進行修改時,必須首先獲得對應的 Segment 鎖。

  JDK1.8

  在JDK1.8中,放棄了Segment臃腫的設計,取而代之的是采用Node + CAS + Synchronized來保證并發安全進行實現,synchronized只鎖定當前鏈表或紅黑二叉樹的首節點,這樣只要hash不沖突,就不會產生并發,效率又提升N倍。

  結構如下:

ConcurrentHashMap底層具體實現2

 

  附加源碼,有需要的可以看看

  插入元素過程(建議去看看源碼):

  如果相應位置的Node還沒有初始化,則調用CAS插入相應的數據;

ConcurrentHashMap底層具體實現3

 

  如果相應位置的Node不為空,且當前該節點不處于移動狀態,則對該節點加synchronized鎖,如果該節點的hash不小于0,則遍歷鏈表更新節點或插入新節點;

ConcurrentHashMap底層具體實現4

 

  1. 如果該節點是TreeBin類型的節點,說明是紅黑樹結構,則通過putTreeVal方法往紅黑樹中插入節點;如果binCount不為0,說明put操作對數據產生了影響,如果當前鏈表的個數達到8個,則通過treeifyBin方法轉化為紅黑樹,如果oldVal不為空,說明是一次更新操作,沒有對元素個數產生影響,則直接返回舊值;

  2. 如果插入的是一個新節點,則執行addCount()方法嘗試更新元素個數baseCount;

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 国产麻豆剧果冻传媒一区| 强行扒开双腿猛烈进入| 日日操夜夜操视频| 三上悠亚电影在线观看| 特黄特色大片免费播放路01| 一个妈妈的女儿在线观看5| 色综合久久网| 日本tvvivodes人妖| 国产免费观看青青草原网站| 国产精品综合一区二区三区| 亚洲有码转帖| 国产一级片在线| 免费的生活片| 免费观看国产| 久热这里只有精品视频6| 亚洲日本一区二区三区在线不卡| 国产经典一区二区三区蜜芽| 久久天天躁狠狠躁夜夜2020一| 一本久久精品一区二区| 狠狠色噜噜狠狠狠合久| 女人扒开下面让男人桶爽视频| 天堂中文字幕在线| 又色又爽又黄的视频网站| 中文天堂在线www| 美女扒开尿口给男人桶爽视频| 动漫精品一区二区三区3d| 大陆三级理论电影有哪些| 国产精品亲子乱子伦xxxx裸| 久久精品免费一区二区三区| 日韩精品一区二区三区在线观看l| 伊人影院在线播放| 欧美一级免费在线观看| 蜜桃99| 女人扒开裤子让男人桶| 欧美日韩在线视频不卡一区二区三区| 欧美国产综合| 美国十次啦色| 天堂在线观看中文字幕| 日本无遮挡漫画| 又爽又黄又无遮挡网站| 日本漂亮人妖megumi|