【发布时间】:2018-04-09 07:35:36
【问题描述】:
ConcurrentHashMap 在 Scala 中也可用于以线程安全的方式处理状态。
我想制作一个不可变的快照,用于本地处理。有没有简单的方法来做到这一点?
澄清:在制作快照时进行更改是可以的。我只需要一些及时的镜头,然后使用(不可变使用)2-3 秒,然后丢弃。
临时状态:感谢所有想法,这很快! :) 我会检查它们,但似乎只是 Scala 映射和 synchronized 对我来说可能是最简单的路径。
【问题讨论】:
-
你可以使用
Collections.unmodifiableMap来包裹它。 -
一件事是大多数并发类都是“弱一致”的,这意味着在您迭代它们时无法阻止修改(出于任何原因,但包括制作副本)。如果你想对并发数据结构进行某种主锁,这样你就可以绕过弱一致的属性,我认为你不再处于“简单”的领域。