使HashSet线程安全的可能方法有哪些?看到下面给出的一些样品。
var test = new mutable.HashSet[Long] with mutable.SynchronizedSet[Long]
目前不推荐使用SynchronizedSet。任何建议或样品都会非常有帮助。
答案 0 :(得分:15)
正如scala.collection.mutable.SynchronizedSet
的API文档所示,您可以使用android 4.4
代替。
如果您希望它看起来像java.util.concurrent.ConcurrentHashMap[A, Unit]
而不是Set
,那么您可以使用Map
在java.util.Collections.newSetFromMap
周围添加包装以使其显示比如Map
:
Set
然而,这将返回Java def createSet[T]() = java.util.Collections.newSetFromMap(
new java.util.concurrent.ConcurrentHashMap[T, java.lang.Boolean])
。您可以将其包装为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