1
什么是使HashSet线程安全的可能方法?看到下面给出的一些样品。scala线程安全HashSet
var test = new mutable.HashSet[Long] with mutable.SynchronizedSet[Long]
SynchronizedSet目前已被弃用。任何建议或样本将非常有帮助。
什么是使HashSet线程安全的可能方法?看到下面给出的一些样品。scala线程安全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.newSetFromMap
添加Map
周围的包装,使它看起来像一个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]
注意,[API文档( http://www.scala-lang.org/api/current/scala/collection/mutable/SynchronizedSet.html)建议你可以使用什么来代替已弃用的'SynchronizedSet'。 – Jesper
他们建议使用ConcurrentHashMap我对Set感兴趣 – Prakash