【发布时间】:2013-07-16 09:27:37
【问题描述】:
有一些很好的提示如何组合期货with timeouts。 但是我很好奇如何使用 Future sequence sequenceOfFutures
我的第一个方法是这样的
import scala.concurrent._
import scala.concurrent.duration._
import scala.concurrent.ExecutionContext.Implicits._
object FutureSequenceScala extends App {
println("Creating futureList")
val timeout = 2 seconds
val futures = List(1000, 1500, 1200, 800, 2000) map { ms =>
val f = future {
Thread sleep ms
ms toString
}
Future firstCompletedOf Seq(f, fallback(timeout))
}
println("Creating waitinglist")
val waitingList = Future sequence futures
println("Created")
val results = Await result (waitingList, timeout * futures.size)
println(results)
def fallback(timeout: Duration) = future {
Thread sleep (timeout toMillis)
"-1"
}
}
有没有更好的方法来处理未来序列中的超时,或者这是一个有效的解决方案?
【问题讨论】: