簡體   English   中英

線程在ConcurrentHashMap中是否將新值放入其自己的段中

[英]Does a thread put a new value in its own segment in ConcurrentHashMap

我有一個ConcurrentHashMap,我嘗試使用putIfAbsent()放置一個鍵值對。 現在,由於在並發HashMap上工作的每個線程都有其自己的段,該段由一組鍵值對組成。 是否將新的鍵值對放在自己的段中,或者沒有強制性的要求?

謝謝

您有一個基本的誤解。 線程沒有自己的段。 ConcurrentHashMap的映射根據其鍵的哈希碼分布在各段上,並且在最佳情況下 ,訪問不同鍵的線程最終位於不同的段,因此可以獨立工作。

訪問同一密鑰的線程永遠不會在不同的段結束。 所有鍵都是唯一的Map的原理不會改變。

但是無論如何,這是對過時技術的描述。 從Java 8開始, ConcurrentHashMap不再使用段。 根據容量和哈希碼分布,所有密鑰可能會同時更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM