0

Scala-IDE 3.0.3 (Scala 2.10.4 ベース) を使用すると、次のコードはList、future から計算された の最初の 10 個の値とFuture completedメッセージを表示することで正しく完了します。

import scala.concurrent._
import scala.concurrent.duration._
import scala.util.{Failure, Success}
import ExecutionContext.Implicits.global

object FutureNonBlocking extends App {

    val f1: Future[List[Int]] = future {
        val t = List.range(1, 50).filter(_ % 2 == 0)
        println("Done")
        t
    }

    f1.onComplete {
        case Success(value) => println(value.take(10))
        case Failure(e) => println("Something bad happened")
    }

    Await.complete(f1, 30 seconds)
}

ただし、範囲List.range(1, 50)をに変更しList.range(1, 5000)ても、何も表示されません (Failureトリガーされません)。論理的には、メモリの問題に関連しているようですが、そこで何が起こっているのかわかりません。

さらに奇妙なことに、このコードを REPL で実行しても問題は発生しません。私はそこに何が欠けていますか?

4

1 に答える 1