久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

ConcurrentHashMap的Segment和HashMap的bucket在理論上有什

What is the difference between Segment of ConcurrentHashMap and buckets of HashMap theoretically?(ConcurrentHashMap的Segment和HashMap的bucket在理論上有什么區(qū)別?)
本文介紹了ConcurrentHashMap的Segment和HashMap的bucket在理論上有什么區(qū)別?的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

問(wèn)題描述

我了解在HashMap中,條目(Key,Value)是根據(jù)hash(Key.hashCode)放在桶中的-->表示桶位置的索引.如果條目已經(jīng)放置在該位置,則會(huì)創(chuàng)建一個(gè)鏈表,并且新條目(如果它具有不同的鍵 --> 通過(guò) equals() 方法)放置在鏈表的開(kāi)頭.

I understand that in HashMap, the entries (Key, Value) are placed in buckets based on hash(Key.hashCode)--> The index that denotes the bucket location. In case an entry is already placed at that location, there is a linked list created and the new entry (if it has different key --> via equals() method) is placed at the beginning of the linked list.

  1. 我能否將這個(gè)概念與 ConcurrentHashMap 的概念相關(guān)聯(lián),但不是 Buckets,而是有各個(gè)線程在其上具有鎖的 Segment.而不是 Entries,有 HashEntry(ies).以類似的方式創(chuàng)建一個(gè)鏈表,如果插入的鍵值對(duì)不同,則根據(jù)鍵的 equals() 將其放在鏈表的末尾.
  2. 我這樣說(shuō)對(duì)嗎:CHM 的 put 是不同步的,因此任何線程都可以訪問(wèn)這個(gè)方法,這個(gè) put 方法計(jì)算傳遞給它的鍵的哈希值并獲取段索引(有點(diǎn)像桶).然后僅針對(duì)該段,它調(diào)用 put 方法.現(xiàn)在在 Segment 下, put 方法指定將有一個(gè) lock(),因此只有一個(gè)線程可以更改特定段中的數(shù)據(jù),因此得出結(jié)論,如果并發(fā)級(jí)別為 16,則應(yīng)有 16 個(gè)線程,因此這些線程將是一次只能PUT值一個(gè)段.

推薦答案

  1. 桶是地圖數(shù)組中的一個(gè)單獨(dú)的槽.這對(duì)于 HashMapConcurrentHashMap 都是一樣的.從概念上講,后者將其數(shù)組分解為段(每個(gè)段都是引用數(shù)組),僅此而已.請(qǐng)注意,Java 8 中的 CHM 不再有段,而是一個(gè)數(shù)組.

  1. A bucket is an individual slot in the map's array. This is the same with both HashMap and ConcurrentHashMap. Conceptually, the latter has its array broken into segments (each segment is an array of references), but that's it. Note that the CHM in Java 8 no longer has segments, it's all a single array.

是的,這就是稱為分段鎖定的方案.它減少了線程間爭(zhēng)用,但并沒(méi)有消除它.

Yes, it's the scheme known as segmented locking. It reduces inter-thread contention, but does not eliminate it.

這篇關(guān)于ConcurrentHashMap的Segment和HashMap的bucket在理論上有什么區(qū)別?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來(lái)源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問(wèn)題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Convert List of Strings into Map using Java-8 Streams API(使用 Java-8 Streams API 將字符串列表轉(zhuǎn)換為 Map)
Getting data from JSON(從 JSON 獲取數(shù)據(jù))
java linkedhashmap iteration(javalinkedhashmap迭代)
Converting a list of objects to Map(將對(duì)象列表轉(zhuǎn)換為 Map)
Create a HashMap with a fixed Key corresponding to a HashSet. point of departure(用一個(gè)固定的Key對(duì)應(yīng)一個(gè)HashSet創(chuàng)建一個(gè)HashMap.出發(fā)點(diǎn))
HttpMessageConverter exception : RestClientException: Could not write request: no suitable HttpMessageConverter found(HttpMessageConverter 異常:RestClientException:無(wú)法寫(xiě)入請(qǐng)求:找不到合適的 HttpMessageConverter) - IT屋-程序員
主站蜘蛛池模板: 日韩一区二区在线播放 | 欧美极品在线视频 | 色中文在线| 91视频在线| 麻豆久久久 | 久久久久91| 国产精品久久9 | 亚洲一区欧美 | 亚洲精品乱码久久久久v最新版 | 中文字幕99 | 亚洲网站在线播放 | 在线视频亚洲 | 久久三区 | 精品美女视频在线观看免费软件 | 亚洲在线电影 | 黄色日批视频 | 日韩亚洲欧美综合 | 超碰在线97国产 | 性做久久久久久免费观看欧美 | 日韩av免费在线观看 | 欧美国产日韩在线 | 国产1区在线| 日韩中文字幕在线视频 | 日韩av成人在线 | 三级在线视频 | 日韩一区二区在线视频 | 久久久久久久国产精品 | 国产精品久久久久久婷婷天堂 | 国产电影精品久久 | 日韩1区| 久久美女网 | 亚洲97| 波多野结衣在线观看一区二区三区 | 精品视频一区二区三区 | 日本午夜一区二区三区 | 97精品久久 | 日韩网站在线观看 | 理论片午午伦夜理片影院 | 大乳boobs巨大吃奶挤奶 | 国产精品久久久一区二区三区 | 精品在线看 |