6
A
回答
5
根据文档。 这是可变的收集,可以安全地用于多线程应用程序。
并发哈希特里或TrieMap是
concurrent thread-safe lock-free
执行哈希阵列映射trie。它用于实现并发地图抽象。它有particularly scalable concurrent
插入 并删除操作,并且是memory-efficient
。它支持O(1),原子, 无锁快照,用于实现可线性锁定大小, 迭代器和清除操作。评估(懒惰)快照的成本是 分布在后续更新中,从而使快照评估可水平扩展。
有关详细信息,请参阅:http://lampwww.epfl.ch/~prokopec/ctries-snapshot.pdf
而且它有非常好的API为caching
。 因此,例如,您必须计算不同数量的阶乘,并有时重新使用此结果。
object o {
val factorialsCache = new TrieMap[Int, Int]()
def factorial(num: Int) = ??? // really heavy operations
def doWorkWithFuctorial(num: Int) = {
val factRes = factorialsCache.getOrElseUpdate(num, {
// we do not want to invoke it very often
factorial(num)
// this function will be executed only if there are no records in Map for such key
})
// start do some work `withfactRes`
factRes
}
}
讲究 - 上面使用全局状态(缓存)的写入操作的功能,但它是绝对安全的并发线程使用它。你不会丢失任何数据。
相关问题
- 1. 何时适合使用AJAX?
- 2. 何时适合使用CacheItemRemovedCallback?
- 3. 何时适合使用presentedViewController?
- 4. 何时适合使用Html.RenderAction()?
- 5. 何时适合使用AMQP?
- 6. Scala - TrieMap vs Vector
- 7. 何时适合使用虚拟方法?
- 8. 何时适合使用错误代码?
- 9. 何时适合使用KnownType属性?
- 10. 何时适合使用df.value_counts()vs df.groupby('...')。count()?
- 11. 何时适合使用Scala Extractor?
- 12. TinyMCE不适合页面使用JQuery时
- 13. 适合使用Gnuplot的时间序列
- 14. 什么时候使用IoC合适?
- 15. 在合适的时候使用的CoffeeScript
- 16. Scala - 将TrieMap转换成HashMap
- 17. 如何在使用RecyclerView时使cardView适合屏幕?
- 18. 什么时候适合使用双向关联,什么时候不适用?
- 19. 如何使用Stargazer打印适合rpy2
- 20. 适合X行使用VBA
- 21. 适合使用LAMP的SVN
- 22. 使用COM适合我吗?
- 23. 何时适合使用Django上下文处理器?
- 24. EntityDataSource,ObjectDataSource:何时适合使用它们中的每一个?
- 25. 数据库设计何时适合使用单独的模式?
- 26. 何时适合使用空白最终变量?
- 27. 在VHDL中何时适合使用Process语句?
- 28. 何时使用.attr()设置/更改属性值是否合适?
- 29. 社区何时认为适合使用Singleton?
- 30. 何时适合抛出异常?
你的意思是scala.collection.concurrent.TrieMap? –