91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ConcurrentHashMap的概述

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-24 14:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

數據結構

jdk1.7

jdk1.8

如果頭節點是Node類型,其后就是一個普通的鏈表;如果頭節點是TreeNode類型,它的后面就是一顆紅黑樹,TreeNode是Node的子類。鏈表和紅黑樹之間可以相互轉換:初始的時候是鏈表,當鏈表中的元素超過某個閾值時,把鏈表轉換成紅黑樹;反之,當紅黑樹中的元素個數小于某個閾值時,再轉換為鏈表。

歷史版本對比

從JDK1.7版本的ReentrantLock+Segment+HashEntry,到JDK1.8版本中synchronized+CAS+HashEntry+紅黑樹。代碼量從原來的1000多行變成了 6000多 行,實現上也和原來的分段式存儲有很大的區別。

1.數據結構

取消了Segment分段鎖的數據結構,取而代之的是數組+鏈表+紅黑樹的結構。使用紅黑樹,當一個槽里有很多元素時,查詢時間復雜度從原來的遍歷鏈表O(n),變成遍歷紅黑樹O(logN),Hash沖突的問題也會得到較好的解決

2.鎖的粒度:

JDK1.7采用segment的分段鎖機制實現線程安全,其中segment繼承自ReentrantLock。JDK1.8采用CAS+Synchronized保證線程安全。原來是對需要進行數據操作的Segment加鎖,現調整為對每個頭節點分別加鎖,其并發度,就是Node數組的長度,初始長度為16,這降低了鎖的粒度。

3.并發的擴容:

在JDK 7中,一旦Segment的個數在初始化的時候確立,不能再更改,并發度被固定。之后只是在每個Segment內部擴容,這意味著每個Segment獨立擴容,互不影響,不存在并發擴容的問題。但在JDK 8中,相當于只有1個Segment,當一個線程要擴容Node數組的時候,其他線程還要讀寫,因此處理過會更復雜。

4.代碼實現上的區別:

sizeCtl:

多個線程的共享變量,是操作的控制標識符,它的作用不僅包括threshold的作用,在不同的地方有不同的值也有不同的用途。

-1代表正在初始化

-N 表示正在進行擴容操作。此時sizeCtl的高16位代表的是當前的容量(并不是數值等于容量大?。?低16位代表線程數 容量16的話計算rs = 32795 也就是 1000 0000 0001 1011 可以看出不同的容量對應不同rs值, rs << 16 的值為 11111111111111111111111111111111 10000000000110110000000000000000, 0-15位用于統計參與擴容的線程數, 16-31位用于代表擴容時容器的大小。

正數或0代表hash表還沒有被初始化,這個數值表示初始化或下一次進行擴容的大小,這一點類似于擴容閾值的概念。后面可以看到,它的值始終是當前ConcurrentHashMap容量的0.75倍,這與loadfactor是對應的。

MOVED,TREEBIN,RESERVED :

MOVED,TREEBIN,RESERVED是用來表示特殊節點的哈希值。該類特殊節點均不含實際元素,且其哈希值被設置為負數和普通節點區分。


// ForwardingNode標記節點的hash值(表示正在擴容)

static final int MOVED = -1; // hash for forwarding nodes

// TreeBin節點的hash值,它是對應桶的根節點

static final int TREEBIN = -2; // hash for roots of trees

static final int RESERVED = -3; // hash for transient reservations

審核編輯:符乾江
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7257

    瀏覽量

    91937
  • 代碼
    +關注

    關注

    30

    文章

    4900

    瀏覽量

    70794
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Thread標準認證概述

    本篇知識庫文章概述了開發人員如何將其Thread物聯網設備進行Thread Group認證所需的步驟,并重點介紹使用Silicon Labs(芯科科技)的EFR32無線射頻器件的相關流程。
    的頭像 發表于 06-04 10:10 ?305次閱讀
    Thread標準認證<b class='flag-5'>概述</b>

    DataAbility組件概述介紹

    DataAbility組件概述 DataAbility,即\"使用Data模板的Ability\",主要用于對外部提供統一的數據訪問抽象,不提供用戶交互界面
    發表于 05-28 08:19

    GD32H7系列MCU安全啟動概述

    電子發燒友網站提供《GD32H7系列MCU安全啟動概述.pdf》資料免費下載
    發表于 01-17 15:34 ?0次下載
    GD32H7系列MCU安全啟動<b class='flag-5'>概述</b>

    TMS320C55x DSP功能概述

    電子發燒友網站提供《TMS320C55x DSP功能概述.pdf》資料免費下載
    發表于 12-30 16:48 ?1次下載
    TMS320C55x DSP功能<b class='flag-5'>概述</b>

    TMS320C6000 DSP外設概述參考指南

    電子發燒友網站提供《TMS320C6000 DSP外設概述參考指南.pdf》資料免費下載
    發表于 12-30 16:35 ?0次下載
    TMS320C6000 DSP外設<b class='flag-5'>概述</b>參考指南

    緩存之美——如何選擇合適的本地緩存?

    Guava cache是Google開發的Guava工具包中一套完善的JVM本地緩存框架,底層實現的數據結構類似于ConcurrentHashMap,但是進行了更多的能力拓展,包括緩存過期時間設置、緩存容量設置、多種淘汰策略、緩存監控等,下面簡單介紹下這些功能及其使用方式。
    的頭像 發表于 11-17 14:24 ?824次閱讀
    緩存之美——如何選擇合適的本地緩存?

    AM/DM37x概述

    電子發燒友網站提供《AM/DM37x概述.pdf》資料免費下載
    發表于 10-14 11:32 ?0次下載
    AM/DM37x<b class='flag-5'>概述</b>

    TAS2563設備特性和控制概述

    電子發燒友網站提供《TAS2563設備特性和控制概述.pdf》資料免費下載
    發表于 10-08 11:49 ?0次下載
    TAS2563設備特性和控制<b class='flag-5'>概述</b>

    TI Wi-Fi測試策略概述

    電子發燒友網站提供《TI Wi-Fi測試策略概述.pdf》資料免費下載
    發表于 09-20 10:46 ?1次下載
    TI Wi-Fi測試策略<b class='flag-5'>概述</b>

    Jacinto 7顯示子系統概述應用說明

    電子發燒友網站提供《Jacinto 7顯示子系統概述應用說明.pdf》資料免費下載
    發表于 09-14 10:00 ?0次下載
    Jacinto 7顯示子系統<b class='flag-5'>概述</b>應用說明

    轉換 SDIO 的電壓產品概述

    電子發燒友網站提供《轉換 SDIO 的電壓產品概述.pdf》資料免費下載
    發表于 09-13 10:29 ?0次下載
    轉換 SDIO 的電壓產品<b class='flag-5'>概述</b>

    PCle鏈路培訓概述

    電子發燒友網站提供《PCle鏈路培訓概述.pdf》資料免費下載
    發表于 09-11 09:16 ?0次下載
    PCle鏈路培訓<b class='flag-5'>概述</b>

    AM263到AM263P遷移概述

    電子發燒友網站提供《AM263到AM263P遷移概述.pdf》資料免費下載
    發表于 08-30 10:58 ?0次下載
    AM263到AM263P遷移<b class='flag-5'>概述</b>

    毫米波生產測試概述

    電子發燒友網站提供《毫米波生產測試概述.pdf》資料免費下載
    發表于 08-27 09:44 ?0次下載
    毫米波生產測試<b class='flag-5'>概述</b>

    內部補償高級電流模式(ACM)概述

    電子發燒友網站提供《內部補償高級電流模式(ACM)概述.pdf》資料免費下載
    發表于 08-26 14:55 ?1次下載
    內部補償高級電流模式(ACM)<b class='flag-5'>概述</b>
    主站蜘蛛池模板: 四虎影视地址 | 国产自在自线午夜精品视频在 | 色噜噜狠狠大色综合 | 一本到中文字幕高清不卡在线 | 26uuu另类亚洲欧美日本一 | 亚欧色视频在线观看免费 | 亚洲视频 欧美视频 | 一级毛片在线播放 | 日本久本草精品 | 你懂的在线观看网站 | 大色综合色综合网站 | 狼色在线视频 | 国产精品久久久精品三级 | 天堂影院jav成人天堂免费观看 | 日日夜夜爽 | 男女在线视频 | 欧美精品影院 | 成熟女性毛茸茸xx免费视频 | 天天干天天射天天 | 男人天堂资源网 | 网站黄色在线观看 | 成人欧美一区二区三区黑人免费 | 亚洲黄色网址大全 | 日本日本69xxxx | 久久最新精品 | 激情五月激情综合网 | 亚洲 欧美 丝袜 制服 在线 | 久久久久久久久综合 | 狠狠色噜噜狠狠狠狠97老肥女 | 欧美亚洲第一区 | 九九色网站| 国产手机视频在线 | 色狠狠xx| 狠狠插综合网 | 视频一区中文字幕 | 中文天堂最新版资源新版天堂资源 | 啪啪免费看视频 | 久久国产成人午夜aⅴ影院 久久国产福利 | 天天好比网 | 午夜官网| 午夜视频1000部免费看 |