【发布时间】:2012-07-15 15:15:42
【问题描述】:
我想要做的是开始使用Map 的一些实现,并通过迭代并行集合将数据累积到其中。密钥可以在线程之间“重叠”,因为密钥是概率生成的(与随机数生成有关)。
例如。线程 1 想要将 key = A value = 1 添加到映射中。如果它已经存在,则将 1 添加到现有值(因为值是 1) - 如果不存在,则创建映射。同时,另一个线程有 key = A 和 value = 2,并且想做同样的事情。
有没有办法在不创建整个Actor 系统的情况下做到这一点?
Java 库中的ConcurrentHashMap 看起来很有趣,但是关于跨线程更新映射的安全性,“弱一致性”迭代器让我感到困扰..
【问题讨论】:
-
还有其他同步方法.. 真正归结为所需的结果/语义是什么。
-
wrt ConcurrentHashMap 迭代器,请参阅:stackoverflow.com/questions/3768554/… 如果这些语义不“正确”,那是什么?它类似于在允许不可重复(包括幻像)读取的 READ COMMITTED 和 DB 事务中的 SERIALIZABLE 之间进行选择......这是“正确的”?
标签: scala concurrency parallel-collections