日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ConcurrentHashMap介绍

發(fā)布時(shí)間:2025/5/22 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ConcurrentHashMap介绍 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

ConcurrentHashMap

ConcurrentHashMap底層原理:

ConcurrentHashMap底層數(shù)據(jù)結(jié)構(gòu)和HashMap差不多 ,而在產(chǎn)生Hash沖突時(shí)使用synchronized加鎖來(lái) 和CAS模式來(lái)保證線程的安全!

CAS + synchronized + Node + 紅黑樹(shù)

ConcurrentHashMap的重要屬性:

private transient volatile int sizeCtl; 當(dāng)sizeCtl當(dāng)為負(fù)數(shù)時(shí),-1 表示正在初始化,-N 表示 N - 1 個(gè)線程正在進(jìn)行擴(kuò)容;當(dāng)為 0 時(shí),表示 table 還沒(méi)有初始化;當(dāng)為其他正數(shù)時(shí),表示初始化或者下一次進(jìn)行擴(kuò)容的大小。

構(gòu)造器:

initialCapacity:表示數(shù)組容量 loadFactor 加載因子 concurrencyLevel最大線程 底層保證了initialCapacity>=concurrencyLevel并且 loadFactor是2的次方倍。
并發(fā)度:程序運(yùn)行時(shí)能夠同時(shí)更新 ConccurentHashMap 且不產(chǎn)生鎖競(jìng)爭(zhēng)的最大線程數(shù)。默認(rèn)為 16,且可以在構(gòu)造函數(shù)中設(shè)置。當(dāng)用戶設(shè)置并發(fā)度時(shí),ConcurrentHashMap 會(huì)使用大于等于該值的最小2冪指數(shù)作為實(shí)際并發(fā)度(假如用戶設(shè)置并發(fā)度為17,實(shí)際并發(fā)度則為32)

public ConcurrentHashMap(int initialCapacity,float loadFactor, int concurrencyLevel) {if (!(loadFactor > 0.0f) || initialCapacity < 0 || concurrencyLevel <= 0)throw new IllegalArgumentException();if (initialCapacity < concurrencyLevel) // Use at least as many binsinitialCapacity = concurrencyLevel; // as estimated threadslong size = (long)(1.0 + (long)initialCapacity / loadFactor);int cap = (size >= (long)MAXIMUM_CAPACITY) ?MAXIMUM_CAPACITY : tableSizeFor((int)size);this.sizeCtl = cap;}

put() 方法

流程:

1、如果沒(méi)有初始化,就調(diào)用 initTable() 方法來(lái)進(jìn)行初始化; 2、如果沒(méi)有 hash 沖突就直接 CAS 無(wú)鎖插入; 3、如果需要擴(kuò)容,就先進(jìn)行擴(kuò)容; 4、如果存在 hash 沖突,就加鎖來(lái)保證線程安全,兩種情況:一種是鏈表形式就直接遍歷到尾端插入,一種是紅黑樹(shù)就按照紅黑樹(shù)結(jié)構(gòu)插入; 5、如果該鏈表的數(shù)量大于閥值 8,就要先轉(zhuǎn)換成紅黑樹(shù)的結(jié)構(gòu),break 再一次進(jìn)入循環(huán) 6、如果添加成功就調(diào)用 addCount() 方法統(tǒng)計(jì) size,并且檢查是否需要擴(kuò)容。

擴(kuò)容機(jī)制:

擴(kuò)容時(shí)機(jī):

(1) 元素個(gè)數(shù)達(dá)到擴(kuò)容閾值。 (2) 調(diào)用 putAll 方法,但目前容量不足以存放所有元素時(shí)。 (3) 某條鏈表長(zhǎng)度達(dá)到8,但數(shù)組長(zhǎng)度卻小于64時(shí)。 注意:桶上鏈表長(zhǎng)度達(dá)到 8 個(gè)或者以上,并且數(shù)組長(zhǎng)度為 64 以下時(shí)只會(huì)觸發(fā)擴(kuò)容而不會(huì)將鏈表轉(zhuǎn)為紅黑樹(shù) 。

擴(kuò)容過(guò)程:

構(gòu)建一個(gè)nextTable,大小為table的兩倍。 把table的數(shù)據(jù)復(fù)制到nextTable中。 注意:在復(fù)制過(guò)程支持多線程復(fù)制

Hashtable和 ConcurrentHashMap的區(qū)別:

hashtable和ConcurrentHashMap都是線程安全的 ,但是Hashtable是通過(guò)在修改數(shù)據(jù)時(shí)鎖住整個(gè)HashTable,效率較低 而ConcurrentHashMap是通過(guò)原子性的操作保證數(shù)據(jù)的讀取安全,然后再通過(guò)發(fā)生Hash沖突一個(gè)給這個(gè)數(shù)組位置加鎖,鎖的力度較小來(lái)保證 高并發(fā)下的線程安全的,而且他的擴(kuò)容也是支持多線程擴(kuò)容的,效率較高,Java5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的擴(kuò)展性更好。

總結(jié)

以上是生活随笔為你收集整理的ConcurrentHashMap介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩中文字幕观看 | 狼性av懂色av禁果av | www.97av| 亚洲区成人 | 久久久久国产一区 | 天天干干干干干 | 日本二区三区视频 | 浮力影院草草 | 高清欧美性猛交xxxx黑人猛交 | 91九色丨porny丨肉丝 | 久久成人精品视频 | 韩国三级hd中文字幕 | 泷泽萝拉在线播放 | 在线观看国产免费av | 亚洲夜夜操 | 国产精品一区二区无码对白 | 大帝av| 亚洲国产中文在线 | 欧美成人一级 | 五月天激情啪啪 | 黑人巨大猛交丰满少妇 | 天堂av中文在线 | 久久久久久9 | 91福利一区 | 奇米第四色7777 | 国产一区二区三区免费视频 | 锕锕锕锕锕锕锕锕 | 毛片在线播放视频 | 少妇熟女一区 | 亚洲av无码乱码在线观看富二代 | www.黄在线观看 | 精品伦一区二区三区 | 黄色大片日本 | 欧美日韩综合一区二区 | 国产三区四区视频 | 麻豆精品视频 | 久久77 | 艳妇乳肉豪妇荡乳av无码福利 | 日批动态图 | 国产欧美一区二区三区白浆喷水 | 宇都宫紫苑在线播放 | 一起射导航 | 性——交——性——乱免费的 | 男人天堂网在线观看 | caoporn超碰97 | 日本免费黄网站 | 神马午夜51 | www.久久久久 | 亚洲电影在线看 | 亚洲精品国产a | 成人在线视频观看 | 在线免费看污网站 | 一本色道综合久久欧美日韩精品 | 87福利视频| 国产丰满果冻videossex | 秋霞精品一区二区三区 | 日韩短视频 | 午夜视频黄 | 色批网站| 亚洲AV无码成人精品区麻豆 | 人人干夜夜操 | 黄色aa网站| 欧美视频一区二区三区四区 | 亚洲综合激情网 | 日韩女优一区二区 | 伦hdwww日本bbw另类 | 黄色国产精品 | 美女视屏 | 超碰资源在线 | 精品乱子一区二区三区 | 成人手机视频在线观看 | 日本久久高清视频 | 日韩不卡毛片 | 日韩激情一区 | 国内激情视频 | 欧美网站在线 | 一品毛片 | 婷婷综合亚洲 | 美女破处视频 | 国产a大片 | 黄色一级影片 | 亚洲乱码一区二区三区 | 99热1 | 一级香蕉视频在线观看 | 久久久成人精品视频 | 午夜精品久久久久久久91蜜桃 | 日韩人妻精品无码一区二区三区 | 中文字幕久久久久久久 | 91网址在线观看 | 免费看黄禁片 | 中文字幕在线播放不卡 | 亚洲天天综合 | 欧美日韩一区二区三区四区 | 伊人久久大香线蕉成人综合网 | 亚洲专区欧美 | 中文字幕在线观看一区二区 | 亚洲综合图色40p | 午夜视频| 天天操天天射天天爽 |