【发布时间】:2011-12-23 18:32:14
【问题描述】:
问题陈述:我有一个需要以并行方式处理的证券组合。在 Java 中,我使用线程池来处理每个安全性,并使用锁存器进行倒计时。完成后,我会进行一些合并等。
所以我向我的 SecurityProcessor(它是一个演员)发送消息,并等待所有的未来完成。最后,我使用 MergeHelper 进行后处理。 SecurityProcessor 接受一个安全,执行一些 i/o 和处理并回复一个安全
val listOfFutures = new ListBuffer[Future[Security]]()
var portfolioResponse: Portfolio = _
for (security <- portfolio.getSecurities.toList) {
val securityProcessor = actorOf[SecurityProcessor].start()
listOfFutures += (securityProcessor ? security) map {
_.asInstanceOf[Security]
}
}
val futures = Future.sequence(listOfFutures.toList)
futures.map {
listOfSecurities =>
portfolioResponse = MergeHelper.merge(portfolio, listOfSecurities)
}.get
这种设计是否正确,是否有更好/更酷的方法来使用 akka 实现这个常见问题?
【问题讨论】:
标签: scala parallel-processing future akka actor