Я думаю, у меня возникла проблема с пониманием firstCompletedOf.Учитывая завершающее будущее и не завершающее будущее, я получаю тайм-аут при выполнении следующего четыре раза.
Учитывая этот метод f:
def f = {
val completingFuture = Future {
1
}
val nonCompletingFuture = Future {
while (true) {}
}
val combinedFuture = Future.firstCompletedOf(List(
completingFuture,
nonCompletingFuture
))
val result = Await.result(combinedFuture, 10.seconds)
println(result)
}
f
f
f
f
Когда я запускаю его четыре раза, как показановыше, я получаю исключение по тайм-ауту.Поэтому я подумал, что такого исключения не может быть, потому что завершающее будущее всегда возвращается.
Исключением является
Исключение в потоке "main" java.util.concurrent.TimeoutException: Futures timedчерез 10 секунд
Где я ошибаюсь?