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