假设有一种方法可以返回未来
def getSomeResult(): Future[SomeResult]
它可能会返回不同的结果,具体取决于它何时被调用,特别是我对此方法的成功结果感兴趣,并且如果结果失败则想再次调用该方法。我有一个很强的保证,即最终该方法将返回成功结果 所以,我写了下一个递归函数
def rec(): Future[SomeResult] = {
getSomeResult().recoverWith{case e => rec()}
}
使用方法rec()
会发生什么不好?我怀疑StackOverflowException
不是问题所在,因为future正在使用自己的堆栈在不同的线程上运行。我还怀疑的另一个问题是线程池中的所有线程可能都在忙着尝试执行这个未来,所以这是一种饥饿,是真的吗?