我需要 Scala 中的可变线程安全映射和可变线程安全列表。我知道默认情况下不可变集合是线程安全的。但是,我需要经常更新我的收藏,因此我不能使用不可变的。我还需要我的线程安全可变 Map 来维护插入顺序。
现在正在使用下面的 map
val map = scala.collection.mutable.LinkedHashMap[String,Any]()
该映射保持插入顺序并且是可变的。我如何使它线程安全?
最佳答案
val synchronizedMap = new scala.collection.mutable.LinkedHashMap[String, Any]() with scala.collection.mutable.SynchronizedMap[String, Any]
那应该给你 map with synchronization on each access .简单,但可能无法满足性能要求。如果是这样,创建一个扩展
LinkedHashMap
的自定义类可能会更容易。 ,混入 concurrent.Map
trait (as was suggested)并提供相关方法的实现,即:putIfAbsent
, remove
replace
(2 次重载)。
关于multithreading - Scala - 可变线程安全集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17541355/