multithreading - Scala - 可变线程安全集合

标签 multithreading scala collections map thread-safety

我需要 Scala 中的可变线程安全映射和可变线程安全列表。我知道默认情况下不可变集合是线程安全的。但是,我需要经常更新我的收藏,因此我不能使用不可变的。我还需要我的线程安全可变 Map 来维护插入顺序。

现在正在使用下面的 map

val map = scala.collection.mutable.LinkedHashMap[String,Any]()

该映射保持插入顺序并且是可变的。我如何使它线程安全?

最佳答案

  • You're duplicating topics....
  • 正如 AlexIv in his answer 所提到的,如果您想要线程安全,您可以混合使用一个特性。不过还有一种方法:
    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/

    相关文章:

    java - 有什么方法可以确保调用外部方法是线程安全的?

    scala - 正文 : => Html in the Play framework?

    使用模板围绕任何集合类型的 C++ 包装器

    java - 在 Java 8 中将 lambda 表达式与旧集合类一起使用时,避免使用 .stream() 和 .collect()

    scala - 使用Spark CSV软件包读取非常大的文件时出错

    控制元素插入红黑树的 Java TreeSet 方法

    c++ - 如何在 C++ 中检索与线程相关的对象实例?

    java - 如何在 Java 中以线程安全的方式通过构造函数传递列表?

    java - 我正在尝试编写一个包含 2 个赛车手的程序,但它一直给我一个 IllegalThreadStateException

    postgresql - 使用 postgres 驱动程序玩光滑的数据库配置问题