CompletableFuture当我执行get并引发异常时会自动取消吗?

问题描述 投票:1回答:1

我在代码中执行了以下操作。

CompletableFuture<FOObar> f =  doSomething();
Foobar foo = f.get(timeout, TimeUnit.MILLISECONDS);

如果get抛出任何Exception,无论是TimeoutException,否则将来会发生什么。它是默认取消的,还是应该这样做

try {
f.get(timeout, TimeUnit.MILLISECONDS);
}
catch {
  f.cancel(true);
}

,因此释放了未来。如果我不取消显式删除,将来是否会挂在线程上,如果所有线程都卡在该状态,最终会导致饥饿]

我需要阻塞get,因为我需要foo才能执行进一步的逻辑。

我在代码中执行了以下操作。 CompletableFuture f = doSomething(); Foobar foo = f.get(timeout,TimeUnit.MILLISECONDS);如果get抛出任何异常,是否为...

future completable-future
1个回答
0
投票

根据JavaDoc,在调用get(timeout, unit)时,可能有4个异常:

  • [get(timeout, unit)-如果这个未来被取消
© www.soinside.com 2019 - 2024. All rights reserved.