【发布时间】:2018-06-20 10:29:08
【问题描述】:
以下两个 sn-ps 中哪个更高效且行为正确?
// snippet 1
var map = Map[String, Int]() // immutable map with var
map.synchronized(map += "hello" -> 1)
map.synchronized(map -= "hello")
// snippet 2
val mmap = scala.collection.mutable.Map[String, Int]()
mmap.synchronized(mmap += "hello" -> 1)
mmap.synchronized(mmap -= "hello")
编辑:我正在寻找同时访问地图的情况,其中多个不同的参与者共享同一个地图并想要修改它。链接的问题还涉及var 和val 的一般情况,而我需要对Map 集合类型有所了解。
【问题讨论】:
-
上述问题没有明确处理并发。
-
有什么原因你不能把这张地图放在一个演员里面,让其他演员使用消息来修改/阅读它?
-
我可以尝试,但需要复制,并且我需要演员之间的共享状态,这通过实现消息传递太过分了
-
@soote 再想一想,你是对的!我将使用适当的演员模型来实现它。
标签: scala concurrency immutability scala-collections mutable