我正在Scala中产生大量(〜100.000)http请求任务作为期货。这需要一段时间,所以我希望能够通过增加一个全球计数器来跟踪这些期货有多少成功完成或失败。但是,我想要避免竞争条件。 Scala中有没有选择制作原子计数器?还是有更好的方法去?跟踪已完成的期货
的代码看起来是这样的:
val futures = for(i <- 0 until nSteps) yield future {
...
val content = blocking { ... http request ... }
process(content)
}
Await.result(Future.sequence(futures),2 hours)
你有没有想过为什么你的期货可能会失败。如果你在短时间内回复所有回复,该怎么办?你有资源来处理(“处理”)你的回应吗?如果没有,您的期货可能会因此而超时? – 2014-11-24 11:47:48
@SoumyaSimanta,我不认为许多失败。如果失败,很可能是因为服务器没有响应。我只想跟踪进展情况。 – Thijs 2014-11-24 11:55:17
这可能是期货不是你正在寻找的东西。你有没有想过一个演员,揣测计算?这可以让你做到这一点没有阻碍,但会让你围绕同步问题。 – 2014-11-24 12:27:41