IO assíncrona em Scala com futuros

Digamos que eu esteja obtendo uma lista (potencialmente grande) de imagens para baixar de alguns URLs. Estou usando o Scala, então o que eu faria seria:

import scala.actors.Futures._

// Retrieve URLs from somewhere
val urls: List[String] = ...

// Download image (blocking operation)
val fimages: List[Future[...]] = urls.map (url => future { download url })

// Do something (display) when complete
fimages.foreach (_.foreach (display _))

Eu sou um pouco novo no Scala, então isso ainda parece um pouco mágico para mim:

Esse é o jeito certo de fazer? Quaisquer alternativas, se não é?Se eu tiver 100 imagens para download, isso criará 100 threads de uma só vez ou usará um pool de threads?Será a última instrução (display _) ser executado no thread principal, e se não, como posso ter certeza que é?

Obrigada pelo Conselho!

questionAnswers(3)

yourAnswerToTheQuestion