并发 hashmap 不需要同步 getter/setter 吗?

2023-12-08

如果我使用并发哈希图并且我有设置和获取值的方法,因为我使用并发哈希图,我需要使 getter 和 setter 同步吗?这是多余的吗?有一种设计更好吗?

另外,没有同步的并发哈希图是否比具有同步 getter 和 setter 的哈希图更快?这是为了高性能系统

谢谢


  1. java.util.concurrent.ConcurrentHashMap是线程安全的
  2. 它比使用更快synchronized(object)
  3. 您仍然需要小心,不要通过这样的代码创建“逻辑”竞争条件

    if (map.get(key) != null) {
        map.put(key, new SomethingStrictlyUnique());
    }
    
  4. 根据经验,用并发集合替换同步集合可以提供显着的效果可扩展性风险很小的改进。

  5. 根据javadoc,ConcurrentHashMap 返回的迭代器是“弱一致”的(而不是快速失败),因此它们容忍并发修改,遍历构造迭代器时存在的元素,并且may反映迭代器构造后对集合的修改。

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

并发 hashmap 不需要同步 getter/setter 吗? 的相关文章

随机推荐

  • 在 Rust 中,存储较大的类型更快还是存储较小的类型并始终强制转换它们更快?

    我正在用 Rust 开发一个国际象棋引擎 我有一个Move结构与from and to字段 它们是Square Square是一个包含一个结构体usize 这样我在访问该职位的棋盘元素时就可以直接使用它 因为在 Rust 中索引必须用usi
  • 在 Windows 7 上安装 Ruby on Rails - 快速且简单 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 由于我在装有 Windows 7 的笔记本电脑上安装 RoR 时遇到了很多问题 因此我想与您分享我的步骤 许多人告诉您使用 InstantRails 我也这样做了 但下面的选项最
  • 有没有办法在 Eclipse 中生成“Lorem ipsum”?

    我正在寻找一种生成方法Lorem ipsum在 Eclipse 中为虚拟文本创建视图时 例如 在 Visual Studio 中 您只需输入即可完成lorem并按选项卡 在日食中有什么可以做到的吗 任何想法 在 Android Studio
  • mysql 连接表

    我有4张桌子 表 A 具有用户 user id username and name 具有令牌的表 B token id user id 每个用户有 10 个令牌条目 每个令牌仅分配给一个用户 一个用户拥有多个代币 10 表C即街机游戏 ar
  • 如何为单个字符着色并保持适当的间距/字距调整/对齐?

    我想使用 Graphics DrawString 使用单独的颜色绘制字符 问题是 每次调用 DrawString 时 我都必须知道相对于其他字符的位置 使用点或矩形 当考虑到在具有 StringFormat 的矩形中使用 DrawStrin
  • 内联 JavaScript 会阻塞 UI 线程吗?

    我读了这篇好文章外部脚本如何阻塞 UI 线程但我不清楚阻塞是否实际上是由于存在
  • 根据SDK版本加载类

    有什么方法可以根据手机运行的操作系统版本加载类吗 例如 我制作了一个需要 1 6 Android 的应用程序 有没有办法让我根据手机运行的操作系统加载一个类或另一个类 我特意询问这个联系人 数据库已从 1 6 更改为 2 0 旧版本不会在新
  • for in 循环内部如何工作 - Objective C - 基础

    我找到了这个答案 https stackoverflow com a 5163334 1364174 其中介绍了如何for in循环被实现 NSFastEnumerationState enumState 0 id objects MAX
  • 带查找的动态数组的行式文本连接

    这个问题与以下问题密切相关这个答案来自用户马克 菲茨帕特里克 My sheet image 我在 M3 和 AB3 同一列表 中有一个国家 地区代码标题的变量列表 以及在 A4 中作为行的唯一 提及 的变量列表 M4 和 AB4 中的公式计
  • AttributeError:无法访问“DataFrameGroupBy”对象的可调用属性“groupby”

    我有一个包含 3 列的数据框 我想通过执行以下操作来根据筷子长度对列进行分组 meansByCL df chopstick groupby Chopstick Length Food Pinching Efficiency mean res
  • 使用 IP 地址和 SNI 启动 https 连接

    我在用着WinHttpConnect为了在我的 Windows 应用程序和远程服务器之间建立 https 连接 但是 我的服务器不一定有 DNS 地址 因此通过设置建立连接pswzServerName到原始 IPV4 地址 WINHTTPA
  • 如何将单元中定义的组件添加到Delphi调色板?

    我有一个定义组件的 pa 单元 我怎样才能将它添加到调色板 我知道的唯一方法是将其包含在包中 有直接的方法吗 在一个包中 有一个单元有一个名为Register 大小写很重要 在该过程中 调用RegisterComponents在您想要显示在
  • 如何获取Qt中通过样式表设置的小部件的字体?

    我有 Qt 应用程序 应用了自定义样式表 以及一般的所有小部件 并在此样式表中包含自定义字体 但是当尝试获取某些小部件的字体时font 方法返回不同的字体 我想获得a的字体QWidget这是由样式表设置的 这font 方法总是返回全局系统字
  • 适用于 Xcode 6 的 iPhone 4 模拟器

    我需要模拟 iPhone 4 不是 iPhone 4S 我得到了 iPhone 的完整列表 但 4 不是其中之一 在谷歌上搜索了一个小时后 我抓狂了 我做错了什么 我也尝试过修改构建设置但无济于事 没有针对 iPhone 4 的选项 您认为
  • 将范围复制到虚拟范围

    是否可以将范围复制到虚拟范围 或者是否需要我将其随意粘贴到工作簿中的另一个范围中 dim x as range x copy of Range A1 A4 显然我通常使用以下代码 dim x as range set x Range A1
  • 未知服务错误 botocore

    我正在尝试使用最近的亚马逊转录服务 transcribe boto3 client transcribe 我收到以下错误 botocore exceptions UnknownServiceError Unknown service tra
  • 创建独立进程!

    我正在尝试从 C 中的服务创建一个进程 这个新进程是作为子进程创建的 我想创建一个独立的进程而不是子进程 我正在使用 CreateProcess 函数来实现相同的目的 由于我创建的新进程是一个子进程 当我尝试在服务级别杀死进程树时 它也会杀
  • CSS中的梯形div

    我想要内容为梯形的部分div但我不知道如何开始或实现我的目标的最佳方法是什么 我遇到过这个解决方案 但没有太多信息可供我理解CSS3 转换为梯形 HTML div class section p content here p div 这是创
  • 在固定大小的大正方形中创建动态等大小的小正方形网格

    我怎样才能在固定的大正方形内创建动态的等大小的正方形 尺寸应根据正方形的数量 这将是最通用的解决方案 使用CSSgrid根据子元素的总和 可计算列和行 JS解释 grid children length 计算以下孩子的数量grid div
  • 并发 hashmap 不需要同步 getter/setter 吗?

    如果我使用并发哈希图并且我有设置和获取值的方法 因为我使用并发哈希图 我需要使 getter 和 setter 同步吗 这是多余的吗 有一种设计更好吗 另外 没有同步的并发哈希图是否比具有同步 getter 和 setter 的哈希图更快