女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ConcurrentHashMap的概述

電子設(shè)計(jì) ? 來(lái)源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-24 14:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

數(shù)據(jù)結(jié)構(gòu)

jdk1.7

jdk1.8

如果頭節(jié)點(diǎn)是Node類(lèi)型,其后就是一個(gè)普通的鏈表;如果頭節(jié)點(diǎn)是TreeNode類(lèi)型,它的后面就是一顆紅黑樹(shù),TreeNode是Node的子類(lèi)。鏈表和紅黑樹(shù)之間可以相互轉(zhuǎn)換:初始的時(shí)候是鏈表,當(dāng)鏈表中的元素超過(guò)某個(gè)閾值時(shí),把鏈表轉(zhuǎn)換成紅黑樹(shù);反之,當(dāng)紅黑樹(shù)中的元素個(gè)數(shù)小于某個(gè)閾值時(shí),再轉(zhuǎn)換為鏈表。

歷史版本對(duì)比

從JDK1.7版本的ReentrantLock+Segment+HashEntry,到JDK1.8版本中synchronized+CAS+HashEntry+紅黑樹(shù)。代碼量從原來(lái)的1000多行變成了 6000多 行,實(shí)現(xiàn)上也和原來(lái)的分段式存儲(chǔ)有很大的區(qū)別。

1.?dāng)?shù)據(jù)結(jié)構(gòu)

取消了Segment分段鎖的數(shù)據(jù)結(jié)構(gòu),取而代之的是數(shù)組+鏈表+紅黑樹(shù)的結(jié)構(gòu)。使用紅黑樹(shù),當(dāng)一個(gè)槽里有很多元素時(shí),查詢時(shí)間復(fù)雜度從原來(lái)的遍歷鏈表O(n),變成遍歷紅黑樹(shù)O(logN),Hash沖突的問(wèn)題也會(huì)得到較好的解決

2.鎖的粒度:

JDK1.7采用segment的分段鎖機(jī)制實(shí)現(xiàn)線程安全,其中segment繼承自ReentrantLock。JDK1.8采用CAS+Synchronized保證線程安全。原來(lái)是對(duì)需要進(jìn)行數(shù)據(jù)操作的Segment加鎖,現(xiàn)調(diào)整為對(duì)每個(gè)頭節(jié)點(diǎn)分別加鎖,其并發(fā)度,就是Node數(shù)組的長(zhǎng)度,初始長(zhǎng)度為16,這降低了鎖的粒度。

3.并發(fā)的擴(kuò)容:

在JDK 7中,一旦Segment的個(gè)數(shù)在初始化的時(shí)候確立,不能再更改,并發(fā)度被固定。之后只是在每個(gè)Segment內(nèi)部擴(kuò)容,這意味著每個(gè)Segment獨(dú)立擴(kuò)容,互不影響,不存在并發(fā)擴(kuò)容的問(wèn)題。但在JDK 8中,相當(dāng)于只有1個(gè)Segment,當(dāng)一個(gè)線程要擴(kuò)容Node數(shù)組的時(shí)候,其他線程還要讀寫(xiě),因此處理過(guò)會(huì)更復(fù)雜。

4.代碼實(shí)現(xiàn)上的區(qū)別:

sizeCtl:

多個(gè)線程的共享變量,是操作的控制標(biāo)識(shí)符,它的作用不僅包括threshold的作用,在不同的地方有不同的值也有不同的用途。

-1代表正在初始化

-N 表示正在進(jìn)行擴(kuò)容操作。此時(shí)sizeCtl的高16位代表的是當(dāng)前的容量(并不是數(shù)值等于容量大小) 低16位代表線程數(shù) 容量16的話計(jì)算rs = 32795 也就是 1000 0000 0001 1011 可以看出不同的容量對(duì)應(yīng)不同rs值, rs << 16 的值為 11111111111111111111111111111111 10000000000110110000000000000000, 0-15位用于統(tǒng)計(jì)參與擴(kuò)容的線程數(shù), 16-31位用于代表擴(kuò)容時(shí)容器的大小。

正數(shù)或0代表hash表還沒(méi)有被初始化,這個(gè)數(shù)值表示初始化或下一次進(jìn)行擴(kuò)容的大小,這一點(diǎn)類(lèi)似于擴(kuò)容閾值的概念。后面可以看到,它的值始終是當(dāng)前ConcurrentHashMap容量的0.75倍,這與loadfactor是對(duì)應(yīng)的。

MOVED,TREEBIN,RESERVED :

MOVED,TREEBIN,RESERVED是用來(lái)表示特殊節(jié)點(diǎn)的哈希值。該類(lèi)特殊節(jié)點(diǎn)均不含實(shí)際元素,且其哈希值被設(shè)置為負(fù)數(shù)和普通節(jié)點(diǎn)區(qū)分。


// ForwardingNode標(biāo)記節(jié)點(diǎn)的hash值(表示正在擴(kuò)容)

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

// TreeBin節(jié)點(diǎn)的hash值,它是對(duì)應(yīng)桶的根節(jié)點(diǎn)

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

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

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7255

    瀏覽量

    91815
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Thread標(biāo)準(zhǔn)認(rèn)證概述

    本篇知識(shí)庫(kù)文章概述了開(kāi)發(fā)人員如何將其Thread物聯(lián)網(wǎng)設(shè)備進(jìn)行Thread Group認(rèn)證所需的步驟,并重點(diǎn)介紹使用Silicon Labs(芯科科技)的EFR32無(wú)線射頻器件的相關(guān)流程。
    的頭像 發(fā)表于 06-04 10:10 ?288次閱讀
    Thread標(biāo)準(zhǔn)認(rèn)證<b class='flag-5'>概述</b>

    DataAbility組件概述介紹

    DataAbility組件概述 DataAbility,即\"使用Data模板的Ability\",主要用于對(duì)外部提供統(tǒng)一的數(shù)據(jù)訪問(wèn)抽象,不提供用戶交互界面
    發(fā)表于 05-28 08:19

    GD32H7系列MCU安全啟動(dòng)概述

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

    TMS320C6000 DSP外設(shè)概述參考指南

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

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

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

    AM/DM37x概述

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

    TAS2563設(shè)備特性和控制概述

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

    TI Wi-Fi測(cè)試策略概述

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

    Jacinto 7顯示子系統(tǒng)概述應(yīng)用說(shuō)明

    電子發(fā)燒友網(wǎng)站提供《Jacinto 7顯示子系統(tǒng)概述應(yīng)用說(shuō)明.pdf》資料免費(fèi)下載
    發(fā)表于 09-14 10:00 ?0次下載
    Jacinto 7顯示子系統(tǒng)<b class='flag-5'>概述</b>應(yīng)用說(shuō)明

    轉(zhuǎn)換 SDIO 的電壓產(chǎn)品概述

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

    PCle鏈路培訓(xùn)概述

    電子發(fā)燒友網(wǎng)站提供《PCle鏈路培訓(xùn)概述.pdf》資料免費(fèi)下載
    發(fā)表于 09-11 09:16 ?0次下載
    PCle鏈路培訓(xùn)<b class='flag-5'>概述</b>

    AM263到AM263P遷移概述

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

    毫米波生產(chǎn)測(cè)試概述

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

    內(nèi)部補(bǔ)償高級(jí)電流模式(ACM)概述

    電子發(fā)燒友網(wǎng)站提供《內(nèi)部補(bǔ)償高級(jí)電流模式(ACM)概述.pdf》資料免費(fèi)下載
    發(fā)表于 08-26 14:55 ?1次下載
    內(nèi)部補(bǔ)償高級(jí)電流模式(ACM)<b class='flag-5'>概述</b>

    人工智能概述

    人工智能關(guān)鍵技術(shù)概述
    發(fā)表于 07-17 17:17 ?0次下載