小编Rob*_* A.的帖子

为什么Scala Futures一次只运行2个?

我正在尝试使用Scala Futures同时运行50多个任务.不幸的是,虽然我只让他们一次运行2.有人能告诉我我做错了什么或如何提高并行度?

import ExecutionContext.Implicits.global
import scala.concurrent._
import scala.concurrent.duration._

object Test {
  def main(args: Array[String]) {
    def go() = {
      val list = Seq(
          Future { println("start 1"); Thread.sleep(1000); println("stop 1")}, 
          Future { println("start 2"); Thread.sleep(2000); println("stop 2")},
          Future { println("start 3"); Thread.sleep(3000); println("stop 3")},
          Future { println("start 4"); Thread.sleep(4000); println("stop 4")},
          Future { println("start 5"); Thread.sleep(5000); println("stop 5")}
      )
      Future.sequence(list)
    }
    Await.result(go, Duration.Inf)
  }
}
Run Code Online (Sandbox Code Playgroud)

我得到的结果是

start 1
start 2  
stop 1  
start 3  
stop 2  
start 4  
stop 3 …
Run Code Online (Sandbox Code Playgroud)

parallel-processing concurrency scala concurrent.futures

3
推荐指数
1
解决办法
749
查看次数