作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使 HashSet 线程安全的可能方法是什么?看到下面给出的一些样本。
var test = new mutable.HashSet[Long] with mutable.SynchronizedSet[Long]
最佳答案
如 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])
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/
我是一名优秀的程序员,十分优秀!