是否可以纯粹用 Kotlin 实现并发哈希映射(不依赖 Java)?我是 Kotlin 新手,看起来 kotlin.collections 中没有明显可用的 API。
没有纯粹用 Kotlin 实现的方便的并发哈希映射。 真正的并发哈希表非常难以构建,我不建议任何人尝试。
一般来说,几乎可以肯定最合适的做法——尤其是在 Kotlin 多平台空间中——就是简单地用一个简单的互斥体(可能是一个标准的协程互斥体)包装一个普通的 MutableMap。 对于 KMP 可能使用的环境来说,这通常应该表现得足够好。
您可能可以转换源代码而不会出现太多问题。它是免费提供的,例如这里。 Kotlin 多平台的并发模型(我猜这是你的目标,如果你只针对 JVM,则没有必要重新实现它)与 Java 使用的并发模型有点不同,例如没有锁。但这没有理由阻止它。
以下资源也可能对您的实施有所帮助:
你可以尝试:
val emitters: ConcurrentMap<String, Any> = ConcurrentHashMap()
// get
val obj: Any = emitters[email]
// put:
emitters[email] = this
// delete
emitters.remove(email)
这样,你不需要向你的项目添加任何库