相关疑难解决方法(0)

Scala中的异步IO与期货

假设我从一些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 _))
Run Code Online (Sandbox Code Playgroud)

我对Scala有点新意,所以对我来说这看起来仍然有些神奇:

  • 这是正确的方法吗?任何替代品,如果不是?
  • 如果我要下载100个图像,这会一次创建100个线程,还是会使用线程池?
  • 最后一条指令(display _)是否会在主线程上执行,如果没有,我该如何确定呢?

谢谢你的建议!

io multithreading scala future

67
推荐指数
2
解决办法
2万
查看次数

scala.concurrent.blocking - 它实际上做了什么?

我花了一些时间学习Scala执行上下文,底层线程模型和并发的主题.您能解释一下scala.concurrent.blocking "调整运行时行为""可以提高性能或避免死锁"的方式,如scaladoc中所述?

文档中,它被作为一种等待api的手段,它不实现Awaitable.(也许只是长时间运行的计算应该被包装?).

它究竟是做什么的?

通过消息来源不容易背叛其秘密.

concurrency scala java.util.concurrent

47
推荐指数
1
解决办法
4438
查看次数