Ниже приведен мой класс, в котором я запускаю задачи одновременно. Моя проблема заключается в том, что мое приложение никогда не заканчивается даже после получения результата для всех функций. Я подозреваю, что пул потоков не закрывается, что приводит мое приложение к жизни даже после моих задач. Поверьте мне, я много искал, но не повезло. Что мне здесь не хватает?Scala Future concurrency Issue
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Future
import scala.collection.mutable.ListBuffer
import scala.util.Failure
import scala.util.Success
object AppLauncher{
def launchAll(): ListBuffer[Future[String]] = {
// My code logic where I launch all my threads say 50
null
}
def main(args:Array[String]):Unit= {
register(launchAll())
}
def register(futureList: ListBuffer[Future[String]]): Unit =
{
futureList.foreach { future =>
{
future.onComplete {
case Success(successResult) => {
println(successResult)
}
case Failure(failureResult) => { println(failureResult) }
}
}
}
}
}
Как вы создаете эти фьючерсы? Я попытался запустить пример. Я создал фиктивные фьючерсы со списком ListBuffer.fill (50) (Future («asd»)). Основной корпус закончился, прежде чем что-либо было напечатано на консоли. Я добавил Thread.sleep (1000) после вызова метода регистрации. Программа напечатала asd двадцать раз и закрылась через 1000 секунд. Так что, может быть, есть проблема с вашим будущим или что-то в этом роде? Не могли бы вы предоставить более подробную информацию о ваших потоках? – NieMaszNic