0

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

4

1 回答 1

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. 工人演员处理单元并将准备好的位发送到累加器演员
  3. 累加器参与者收集准备好的结果并输出一个列表。
于 2016-11-09T20:05:52.763 回答