使HashSet线程安全的可能方法是什么?看到下面给出的一些样品.
var test = new mutable.HashSet[Long] with mutable.SynchronizedSet[Long]
Run Code Online (Sandbox Code Playgroud)
目前不推荐使用SynchronizedSet.任何建议或样品都会非常有帮助.
Jes*_*per 15
作为scala.collection.mutable.SynchronizedSet建议的API文档,您可以使用java.util.concurrent.ConcurrentHashMap[A, Unit].
如果你希望它看起来像一个Set而不是像a Map,那么你可以使用java.util.Collections.newSetFromMap在Map它周围添加一个包装使它看起来像Set:
def createSet[T]() = java.util.Collections.newSetFromMap(
new java.util.concurrent.ConcurrentHashMap[T, java.lang.Boolean])
Run Code Online (Sandbox Code Playgroud)
但是,这将返回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
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用特定类型的元素创建同步集,例如Long,如下所示:
val set = createSet[Long]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3150 次 |
| 最近记录: |