2

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 を使用すると、永遠に待機します。それを修正するための解決策はありますか?

しかし、それはうまくいきませんでした 誰かがこの問題を解決する方法を提案してもらえますか?

4

0 に答える 0