【问题标题】:How to make an immutable copy of a `ConcurrentHashMap`?如何制作“ConcurrentHashMap”的不可变副本?
【发布时间】:2018-04-09 07:35:36
【问题描述】:

ConcurrentHashMap 在 Scala 中也可用于以线程安全的方式处理状态。

我想制作一个不可变的快照,用于本地处理。有没有简单的方法来做到这一点?


澄清:在制作快照时进行更改是可以的。我只需要一些及时的镜头,然后使用(不可变使用)2-3 秒,然后丢弃。

临时状态:感谢所有想法,这很快! :) 我会检查它们,但似乎只是 Scala 映射和 synchronized 对我来说可能是最简单的路径。

【问题讨论】:

标签: java java.util.concurrent


【解决方案1】:

好吧,你可以使用Guava's ImmutableMap

ImmutableMap<K, V> immutableCopy = ImmutableMap.copyOf(yourConcurrentMap);

当然,如果在复制操作期间碰巧有写入,那么这些也可能最终会出现在副本中。

【讨论】:

  • 谢谢。创建快照期间的更改对我来说是可以的。由于 Scala 是我的平台,我可能不会一直接触到 Guava。
  • @akauppi 我对 Scala 不是很熟悉,但你应该可以在 Scala 代码中直接使用 Guava。
猜你喜欢
  • 2014-07-22
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多