Scala Future或其他并行执行Java void方法的方法



我有以下代码:

stringList map copyURLToFile // List[String]
def copyURLToFile(symbol: String) = {
  val url = new URL(base.replace("XXX", symbol))
  val file = new File(prefix + symbol + ".csv")
  org.apache.commons.io.FileUtils.copyURLToFile(url, file)
}

如何使copyURLToFile并行执行?

Scala Futures需要一个返回类型,但如果我制作Future[Unit]类型的copyURLToFile,我该如何从函数返回?

如果您想要一种非常简单的方法来并行化它,那么只需使用并行集合库映射列表即可。

stringList.par.map(copyURLToFile).toList

您需要返回一些东西,如何知道哪些文件是下载的?

将您的代码更改为:

def copyURLToFile(symbol: String): (String,String) = {
  val url = new URL(base.replace("XXX", symbol))
  val file = new File(prefix + symbol + ".csv")
  org.apache.commons.io.FileUtils.copyURLToFile(url, file)
  return (symbol, file)
}

然后生成的集合将包含符号和下载它们的文件的路径。

相关内容

最新更新