Scala中的共享链接列表

时间:2016-11-09 19:48:38

标签: scala atomicboolean

我有一些工作者和一个任务列表(一个链表),由一个主演员发送给工人。链表的每个元素都有一个布尔标志,用于指定元素是否由工作者使用。如果没有,则worker将标志设置为selected并开始处理该元素。当actor完成该元素时,将检查下一个未选择元素的列表元素。 工作人员将继续工作,直到列表中没有任何元素可供使用。 我的问题是设置标志以显示元素被选中的最佳方法。我正在考虑使用AtomicBoolean来标记它以原子方式检查和设置它。但我不知道如何在scala中使用AtomicBoolean。 请指教

1 个答案:

答案 0 :(得分:1)

您可以导入Java的AtomicBoolean并照常使用它:

scala> import java.util.concurrent.atomic.AtomicBoolean
import java.util.concurrent.atomic.AtomicBoolean

scala> val ab = new AtomicBoolean(false)
ab: java.util.concurrent.atomic.AtomicBoolean = false

我会重新考虑设计 - 演员通常不需要通过除队列/收件箱之外的任何机制进行同步。怎么样:

  1. 主演员在工人演员之间分配工作单位
  2. worker actors将单位发送就绪位处理为累加器actor
  3. accumulator actor收集准备好的结果并输出一个列表。