ConcurrentHashMap在Scala中也可用于以线程安全的方式处理状态。
我想为它做一个不可变的快照,用于本地处理。有一种简单的方法可以做到这一点吗?
澄清:在制作快照时让事情发生变化是可以的。我只需要及时使用一些镜头,然后使用(不可变使用)2-3秒,然后丢弃。
临时状态:感谢所有想法,这很快! :)我会检查它们,但看起来只是Scala地图而synchronized
可能是最不复杂的路径,对我而言。
答案 0 :(得分:0)
好吧,你可以使用Guava's ImmutableMap:
ImmutableMap<K, V> immutableCopy = ImmutableMap.copyOf(yourConcurrentMap);
当然,如果在复制操作期间发生了写入,那么这些也可能最终出现在副本中。