gpt4 book ai didi

java - 是否有不可变(通常是 ConcurrentHashMap)数据结构的官方模式,能够定期替换?

转载 作者:行者123 更新时间:2023-11-30 04:15:32 28 4
gpt4 key购买 nike

我发现自己在重复代码

  1. 存储数据结构的只写副本和只读不可变的ConcurrentHashMap
  2. 读者只能从只读的不可变 HashMap 中读取无锁
  3. Writer 正在写入只写带锁的数据结构(另一个 ConcurrentHashMap)。
  4. 每隔几分钟(取决于应用程序的需求)我就会切换只读数据结构,该数据结构与只写数据结构有点旧。因此,我在这里不使用锁,而是在只读数据结构上使用 volatile 仅标记。

java/官方库中是否有一个已经发布的带有示例代码的众所周知的模式,这样我就不必自己创建这个模式?

最佳答案

也许我不完全理解您的要求,但是您为什么不读取和写入 ConcurrentHashMap 的一个实例呢? ConcurrentMap 的全部要点是以线程安全的方式读取和写入线程之间的映射。您能否解释一下为什么在您的情况下不会发生这种情况?

只读不可变的 ConcurrentHashMap <-- 这绝对没有意义。任何安全发布的Map 实例(例如普通的旧HashMap)都可以由多个线程安全地读取。这里唯一的危险是保证 Map 只能读取而不能写入。可以通过使用 Collections.unmodifyingMap() 或 Guava 的 ImmutableMap 来实现这一保证。还值得一提的是,最好确保映射条目本身是不可变的。

关于java - 是否有不可变(通常是 ConcurrentHashMap)数据结构的官方模式,能够定期替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18504072/

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