fwi*_*tra 11 collections concurrency scala
我有一个演员 - 从本质上讲 - 维护一个对象列表.它有三个基本操作,一个是添加,更新和删除(有时删除是从add方法调用的,但除此之外),并且可以使用单个集合.显然,后备列表是同时访问的,添加和删除调用不断交错.
我的第一个版本使用了ListBuffer,但我在某个地方阅读它并不意味着并发访问.我没有获得并发访问异常,但我确实注意到从中查找和删除对象并不总是有效,可能是由于并发.
我正在重写它以使用var List,但是从Scala的默认不可变List中删除项目有点痛苦 - 我怀疑它适合并发访问.
所以,基本问题:我应该在并发访问情况下使用哪种集合类型,以及如何使用它?
(也许是次要的:一个Actor实际上是一个多线程实体,还是只是我的错误概念,它是否在一个线程中一次处理一个消息?)
(第三级:在Scala中,哪种集合类型最适合插入和随机访问(删除/更新)?)
编辑:对那些响应者:原谅我迟到的回复,我正在制作一个讨厌的习惯,因为在SO或邮件列表上倾倒问题,然后转到下一个问题,暂时忘记原始问题.
hba*_*sta 11
看一下scala.collection.mutable.Synchronized*traits/classes.
我们的想法是将Synchronized traits混合到常规可变集合中以获得它们的同步版本.
例如:
import scala.collection.mutable._
val syncSet = new HashSet[Int] with SynchronizedSet[Int]
val syncArray = new ArrayBuffer[Int] with SynchronizedBuffer[Int]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12354 次 |
最近记录: |