gpt4 book ai didi

Scala 线程安全的 HashSet

转载 作者:行者123 更新时间:2023-12-04 19:51:39 26 4
gpt4 key购买 nike

使 HashSet 线程安全的可能方法是什么?看到下面给出的一些样本。

var test = new mutable.HashSet[Long] with mutable.SynchronizedSet[Long]

SynchronizedSet 目前已弃用。任何建议或样本都会非常有帮助。

最佳答案

scala.collection.mutable.SynchronizedSet 的API文档建议,您可以使用 java.util.concurrent.ConcurrentHashMap[A, Unit]反而。

如果你想让它看起来像 Set而不是像 Map ,那么您可以使用 java.util.Collections.newSetFromMapMap 周围添加一个包装器让它看起来像 Set :

def createSet[T]() = java.util.Collections.newSetFromMap(
new java.util.concurrent.ConcurrentHashMap[T, java.lang.Boolean])

然而,这将返回一个 Java Set .您可以将其包装为 scala.collection.mutable.Set :
def createSet[T]() = {
import scala.collection.JavaConverters._
java.util.Collections.newSetFromMap(
new java.util.concurrent.ConcurrentHashMap[T, java.lang.Boolean]).asScala
}

现在您可以使用特定类型的元素创建同步集,例如 Long , 像这样:
val set = createSet[Long]

关于Scala 线程安全的 HashSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40993683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com