Скажем, я получаю (потенциально большой) список изображений для загрузки с некоторых URL-адресов. Я использую Scala, поэтому я бы сделал следующее:
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 _))
Я немного новичок в Scala, поэтому для меня это все еще немного напоминает магию:
- Это правильный способ сделать это? Любые альтернативы, если это не так?
- Если у меня есть 100 изображений для загрузки, это создаст 100 потоков одновременно или будет использовать пул потоков?
- Будет ли выполняться последняя команда (
display _
) в основном потоке, а если нет, как я могу убедиться, что она есть?
Спасибо за ваш совет!