scala中的并发容器,,tireMap等实现并发操作

Scala的并行容器提供了一种高层抽象,允许开发者通过简单的调用如.par实现串行到并行的转换。这些容器包括ParSeq、ParArray、ParVector等,其中TrieMap是一个并发、无锁的数据结构,优化了并发操作和内存使用。通过这种方式,Scala使得并行化更加透明和易于集成到开发流程中。
摘要由CSDN通过智能技术生成

在Scala标准库中包含的并行容器通过免去并行化的底层细节,以方便用户并行编程,同时为他们提供一个熟悉而简单的高层抽象。希望隐藏在抽象容器之后的隐式并行性将带来可靠的并行执行,并进一步靠近主流开发者的工作流程。

原理其实很简单-容器是抽象编程中被广泛熟识和经常使用的类,并且考虑到他们的规则性,容器能够使程序高效且透明的并行化。通过使用户能够在并行操作有序容器的同时改变容器序列,Scala的并行容器在使代码能够更容易的并行化方面做了很大改进。

val list = (1 to 10000).toList
list.map(_ + 42)//串行

list.par.map(_ + 42)//并行,list.par返回ParSeq对象
//或等价的
ParSeq(1,2,3).map(_ + 42)

以下为scala的并行容器:

ParSeq//list.par
ParArray//array.par
ParVector
mutable.ParHashMap
mutable.ParHashSet
immutable.ParHashMap
immutable.ParHashSet
ParRange
ParTrieMap (collection.concurrent.TrieMap scala 2.10以后)

通过调用顺序容器(sequential collections)的par方法,顺序容器(sequential collections)可以被转换为并行容器;通过调用并行容器的seq方法,并行容器可以被转换为顺序容器。

TrieMap类实现了并发、无锁的散列数组,其目的是支持可伸缩的并发插入和删除操作,并提高内存使用效率。

参考

https://docs.scala-lang.org/zh-cn/overviews/parallel-collections/overview.html
https://docs.scala-lang.org/overviews/parallel-collections/overview.html
https://notebook.community/jasonding1354/ScalaFAQ/collections/collection_intro

tireMap使用示例:https://vimsky.com/examples/detail/scala-class-scala.collection.concurrent.TrieMap.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值