gpt4 book ai didi

java - ConcurrentHashMap中Bucket级锁和Segment级锁的区别?

转载 作者:行者123 更新时间:2023-11-30 05:36:21 26 4
gpt4 key购买 nike

我浏览了下面的链接和一些在线视频教程,但无法找到 ConcurrentHashMap 中的存储桶级锁定和段级锁定之间的确切区别。

ConcurrentHashMap

最佳答案

在 Java 8 ConcurrentHashMap 中,更改了其逻辑以使用存储桶级锁而不是段级锁。

有什么区别?

在 Java 7 中,映射被分割为多个段,每个段本身都是一个并发可读的哈希表。每个段内部包含一定数量的桶。

存储桶本身是一个键值对的列表/数组。

并行使用map的线程数量受到段数量的限制。

在 Java 8 中,锁级别已移至存储桶级别,同时删除了段(它仍在代码中,但未使用)。

因此,基本上,在 Java 7 中,插入操作会锁定几个存储桶,而在 Java 8 中,仅锁定一个存储桶。

这样做的另一个原因是,与映射并行工作的线程数量可能会在映射大小增加时增加(更多存储桶 - 更多线程)。在 Java 7 中,段大小是固定的,如果不重新创建映射就无法更改它。

关于java - ConcurrentHashMap中Bucket级锁和Segment级锁的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56527417/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com