sbt プロジェクトでディスパッチ ライブラリを使用しています。3つの未来を初期化して実行すると、完全に機能しますが、もう1つの未来を増やすと、ループになります。
私のコード:
//Initializing Futures
def sequenceOfFutures() ={
var pageNumber: Int = 1
var list ={Seq(Future{})}
for (pageNumber <- 1 to 4) {
list ++= {
Seq(
Future {
str= getRequestFunction(pageNumber);
GlobalObjects.sleep(Random.nextInt(1500));
}
)
}
}
Future.sequence(list)
}
Await.result(sequenceOfFutures, Duration.Inf)
そして getRequestionFunction(pageNumber) コード:
def getRequestionFunction(pageNumber)={
val h=Http("scala.org", as_str)
while(h.isComplete){
Thread,sleep(1500);
}
}
将来のために微調整されたスレッドプールを構成する方法からの1つの提案に基づいて試しましたか?
これをコードに追加しました:
import java.util.concurrent.Executors
import scala.concurrent._
implicit val ec = new ExecutionContext {
val threadPool = Executors.newFixedThreadPool(1000);
def execute(runnable: Runnable) {
threadPool.submit(runnable)
}
def reportFailure(t: Throwable) {}
}// Still didn't work
そのため、4 つ以上の Future を使用すると、永遠に待機します。それを修正するための解決策はありますか?
しかし、それはうまくいきませんでした 誰かがこの問題を解決する方法を提案してもらえますか?