Kotlin 可变集合是线程安全的吗?

bor*_*jab 13 collections thread-safety kotlin

尽管阅读了Kotlin关于集合的文档,但我无法找到 Kotlin 的可变集合是否是线程安全的以及是否有任何并发​​替代实现(例如Java 中的HashMapConcurrentHashMap )

注意:当我们这样做时,我指的是 Kotlin 创建的集合:

mutableMapOf<>()
mutableListOf<>()
mutableSetOf<>()
Run Code Online (Sandbox Code Playgroud)

Ita*_*ssi 23

mutableMapOf对于( MutableMap)、mutableListOf( MutableList) 或mutableSetOf( )返回的集合没有线程安全保证MutableSet

为了实现线程安全,您可以使用相应的 Java Collections 包装器来包装它们:

val myThreadSafeMap = Collections.synchronizedMap(mutableMapOf())
Run Code Online (Sandbox Code Playgroud)

  • 或者使用特定于 JVM 的线程安全实现,例如用于 Map 的 ConcurrentHashMap、用于 Set 的 ConcurrentHashMap.newKeySet() 或用于 List 的 CopyOnWriteArrayList。 (4认同)