【发布时间】:2012-10-17 08:35:53
【问题描述】:
假设我要从某些 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 _) 是否会在主线程上执行,如果没有,我如何确保它是?
感谢您的建议!
【问题讨论】:
标签: multithreading scala io future