色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取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

    文章

    7259

    瀏覽量

    92037
  • 代碼
    +關注

    關注

    30

    文章

    4902

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Thread標準認證概述

    本篇知識庫文章概述了開發人員如何將其Thread物聯網設備進行Thread Group認證所需的步驟,并重點介紹使用Silicon Labs(芯科科技)的EFR32無線射頻器件的相關流程。
    的頭像 發表于 06-04 10:10 ?324次閱讀
    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 ?840次閱讀
    緩存之美——如何選擇合適的本地緩存?

    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>
    主站蜘蛛池模板: 亚洲精品成人a | 18禁三级黄 | 久久兔费黄A级毛片高清 | 2018久久视频在线视频观看 | 在线看片亚洲 | 好大快用力深一点h视频 | 亚洲三级在线看 | 2023国产精品一卡2卡三卡4卡 | 亚洲精品视频在线播放 | 亚洲欧美日韩在线码不卡 | 久久久久久久99精品免费观看 | 亚洲精品久久7777777 | 青青草视频在线ac | 野花香在线观看免费高清播放视频 | 中文字幕人成乱码中国 | 最新国产三级在线不卡视频 | 欧美video巨大粗暴18 | 无码观看AAAAAAAA片 | 亚洲国产中文字幕在线视频 | 久久精品亚洲AV无码三区观看 | 亚洲国产日韩制服在线观看 | 亚洲欧美中文日韩v在线 | 4k岛国精品午夜高清在线观看 | 含羞草国产亚洲精品岁国产精品 | 久久精品在现线观看免费15 | 暖暖免费 高清 日本社区中文 | 极品内射少妇精品无码视频 | 老司机午夜影院试看区 | 扒开黑女人p大荫蒂老女人 扒开粉嫩的小缝末成年小美女 | 人人啪日日观看在线 | 国产精品久久大陆 | 福利一区国产 | 女人一级毛片免费观看 | 久久人妻少妇嫩草AV蜜桃99 | 国产一区二区不卡老阿姨 | 接吻吃胸摸下面啪啪教程 | 午夜剧场1000 | 让人爽到湿的小黄书 | 亚洲熟妇AV乱码在线观看 | 伊人久综合 | 国产伦精品一区二区三区精品 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品