在我的Scala应用程序中,我需要使用几个经常更新的Map和List。Scala中是否有任何线程安全的集合来维护插入顺序?
sf6xfgos1#
是的,在scala.collection.concurrent包中有一个trait:concurrent.Map它只是一个trait,所以只要将这个trait混入到Map中,它就会成为线程安全的。如果你需要一个好的并发Map,试试google的ConcurrentLinkedHashMap(最新版本2015),并使用Scala/Java converter将其转换为Scala Map,这将给予比mixin SynchronizedMap更高的性能。例如我最喜欢的Spray工具包,将其用作实现其缓存模块的核心结构。正如你可以see一样,spray是最快的Scala web工具包
scala.collection.concurrent
SynchronizedMap
1条答案
按热度按时间sf6xfgos1#
是的,在
scala.collection.concurrent
包中有一个trait:concurrent.Map它只是一个trait,所以只要将这个trait混入到Map中,它就会成为线程安全的。如果你需要一个好的并发Map,试试google的ConcurrentLinkedHashMap(最新版本2015),并使用Scala/Java converter将其转换为Scala Map,这将给予比mixin
SynchronizedMap
更高的性能。例如我最喜欢的Spray工具包,将其用作实现其缓存模块的核心结构。正如你可以see一样,spray是最快的Scala web工具包