ConcurrentHashMap的Segment和HashMap的Bucket理论上有什么区别?

2023-11-24

我知道在HashMap中,条目(Key,Value)基于hash(Key.hashCode)--> 表示存储桶位置的索引。如果条目已放置在该位置,则会创建一个链接列表和新条目(如果它有不同的键 --> 通过equals()method) 被放置在链表的开头。

  1. 我可以将这个概念与 ConcurrentHashMap 的概念联系起来吗?但不是 Bucket,而是各个线程拥有锁的 Segment。并且不是 Entries,而是 HashEntry。以类似的方式,创建一个链表,如果插入的键值对不同,则基于equals()的键,它被放置在链表的末尾。
  2. 我这样说是否正确:putCHM 不是同步的,因此任何线程都可以访问该方法,该 put 方法计算传递给它的键的哈希值并获取段索引(有点像桶)。然后仅对于该段,它调用put方法。现在在细分下,put方法指定将会有一个lock(),这样只有一个线程可以更改特定段中的数据,从而得出结论,如果并发级别为 16,则应有 16 个线程,因此这些线程将能够PUT一次仅值一个段。

  1. 桶是映射数组中的一个单独的槽。这两者都是一样的HashMap and ConcurrentHashMap。从概念上讲,后者的数组分为多个段(每个段都是一个引用数组),但仅此而已。请注意,Java 8 中的 CHM 不再具有段,而是一个数组。

  2. 是的,这就是所谓的计划分段锁定。它减少了线程间争用,但并没有消除它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ConcurrentHashMap的Segment和HashMap的Bucket理论上有什么区别? 的相关文章

随机推荐

  • 进行定点数学运算的最佳方法是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我需要为没有 FPU 的
  • 检测 iOS 上的飞行模式

    如何检测手机是否处于飞行模式 仅仅检测没有互联网连接是不够的 我必须能够区分这两种情况 尝试使用SCNetworkReachabilityGetFlags 系统配置框架 如果传回的flags变量为0且返回值为YES 则飞行模式开启 看看苹果
  • 简单的 shell 解决方案,用于为 stdout 的每一行执行命令[重复]

    这个问题在这里已经有答案了 这应该是一个非常简单的任务 我想获取任何旧命令的标准输出的每一行 并使用每个行来执行另一个命令并将其作为参数 例如 LS grep foo applycommand mv s bar 这将需要所有匹配的东西 fo
  • 将位图数组转换为 YUV (YCbCr NV21)

    如何转换返回的BitmapBitmapFactory decodeFile 转换为 YUV 格式 类似于相机 onPreviewFrame 以字节数组返回的形式 这是一些实际有效的代码 untested function byte getN
  • .net 应用程序图标存储在哪里?

    我试图找出我的应用程序的图标存储在 VS 2008 中的位置 在启动项目的应用程序属性中 我添加了一个带有 使用默认设置嵌入清单 设置的图标 我想以编程方式在应用程序中显示图标 但我无法弄清楚图标的存储位置 如何从代码中获取对应用程序图标的
  • 在 Angular 2 中指定服务提供者

    我正在尝试使用 Angular 2 的 DI 系统来自动处理我的服务的依赖项 我想在服务本身上使用注释 而不是使用第二个参数bootstrap 指定所有可注入服务 我有什么 低级服务 services role store ts expor
  • 角度路线包含#!在 url 中而不是 # [重复]

    这个问题在这里已经有答案了 最近我注意到 当使用ngRouteAngularJS 应用程序中的模块 该路由包含 在 URL 中 之前只是 例如 www webiste com login变成www website com login 我必须
  • 无法使用 JavaMail 在 Office365 上对 IMAP 进行身份验证

    我们正在尝试使用 OAUTH2 身份验证将 javamail 1 6 客户端连接到托管在 Office365 上的 Office365 邮箱 无论我们做什么 我们都会不断收到 A1 NO AUTHENTICATE failed 我们已经注册
  • 向文本块添加逐渐增加的模糊效果

    我有这样的文字 div p Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor incididunt ut labore et dolor
  • boost.pool如何实现分配内存的复用?

    背景 My 上一个问题 about boost pool导致我详细研究了boost pool 现在我有一个补充问题来最终确定我的理解 Prelude 这个参考有关对象池模式的说明如下 对象池模式是一种软件创建设计模式 使用一组随时可用的初始
  • 带有 IIS 的 ASP.NET Core - 不允许使用 HTTP 动词

    我们有一个ASP NET 核心 2 0网站还提供了一些简单的Web API用于 UI 增强目的的方法 The Web API在本地运行时 调用按预期工作IIS 快递 但是当我们部署到我们的IIS 8 5生产网络服务器 我们在创建 HTTP
  • 仅当另一个字段有值时才为必填字段,否则必须为空

    我的问题是关于 Laravel验证规则 我有两个输入a and b a是具有三个可能值的选择输入 x y and z 我想写这个规则 b must有一个价值only if a values is x 和b must否则为空 有没有办法写这样
  • Laravel 如何将两个查询结果合并到一个对象中

    我目前陷入如何将两个查询结果合并到一个对象中的问题 下面是我的代码 EDITED 模型方法 public static function getTeamStats competitionId teamId return TeamCompet
  • gnu 汇编器:获取标签/变量的地址 [INTEL SYNTAX]

    我有这样的代码 bss woof long 0 text bleh some op codes here 现在我想将 woof 的地址移到 eax 中 什么是英特尔语法代码在这里吗 将 bleh 的地址移动到 ebx 中也是如此 非常感谢您
  • 将 .Net UserControl 添加到 TabPage 时出现大小调整问题

    我有一个复杂的 Windows 窗体 GUI 程序 其中包含大量自动控件生成和操作 我需要做的一件事是将自定义用户控件添加到新实例化的 TabPage 中 但是 当我的代码执行此操作时 我会收到自动调整大小事件 导致格式变得丑陋 在不详细说
  • Rails 会话当前实践

    有人对 Rails 和会话有任何 最佳实践 提示吗 Rails 3 的默认会话类型仍然是 CookieStore 对吧 我使用 SqlSessionStore 一段时间并且效果很好 但我可能会放弃它而转而使用 CookieStore 即使使
  • 如何在 Flutter 中格式化日期时间

    我正在尝试显示当前的DateTime in a Text点击按钮后的小部件 以下有效 但我想更改格式 目前的方法 DateTime now DateTime now currentTime new DateTime now year now
  • 访问 NSIS 中的命令行参数

    我正在尝试使我的设置脚本模块化 我根据要求从主安装脚本中调用安装 exe 我想将命令行参数传递给被调用的 exe 有人可以告诉我如何访问正在调用的脚本中的命令行参数吗 提前致谢 您可以使用GetOptions功能 FileFunc nsh必
  • 如何通过 JavaScript 或 CSS 检查用户是否处于高对比度模式

    When pressing Shift Left Alt Print Windows switches into high contrast mode is there any chance to detect that on a web
  • ConcurrentHashMap的Segment和HashMap的Bucket理论上有什么区别?

    我知道在HashMap中 条目 Key Value 基于hash Key hashCode gt 表示存储桶位置的索引 如果条目已放置在该位置 则会创建一个链接列表和新条目 如果它有不同的键 gt 通过equals method 被放置在链