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. 何时适合使用presentedViewController?
- 2. 何时适合使用AJAX?
- 3. 何时适合使用AMQP?
- 4. 何时适合使用CacheItemRemovedCallback?
- 5. 何时适合使用Html.RenderAction()?
- 6. 使用Spring CachingConnectionFactory时何时适合cacheConsumers?
- 7. Scala - TrieMap vs Vector
- 8. 何时适合明确使用Err.Clear?
- 9. 何时适合使用df.value_counts()vs df.groupby('...')。count()?
- 10. 何时适合使用KnownType属性?
- 11. 何时适合使用eval(parse())?
- 12. 何时使用适合的迭代器?
- 13. 何时适合使用Scala Extractor?
- 14. 何时适合使用虚拟方法?
- 15. 何时适合使用错误代码?
- 16. 何时适合调用UIObject.getOffsetWidth?
- 17. 是有同时使用Scala TrieMap环路concurrentMap的更新替代
- 18. 何时适合IllegalAccessException?
- 19. Scala - 将TrieMap转换成HashMap
- 20. TinyMCE不适合页面使用JQuery时
- 21. 适合使用Gnuplot的时间序列
- 22. 在合适的时候使用的CoffeeScript
- 23. 使用CollapsingToolbarLayout时ListView不适合底部
- 24. 什么时候使用IoC合适?
- 25. 如何在使用RecyclerView时使cardView适合屏幕?
- 26. 何时适合使用应用程序服务器?
- 27. 什么时候适合使用双向关联,什么时候不适用?
- 28. 如何使用Stargazer打印适合rpy2
- 29. 适合X行使用VBA
- 30. 适合使用LAMP的SVN
你的意思是scala.collection.concurrent.TrieMap? –