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!