我在代码中执行了以下操作。
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
根据JavaDoc,在调用get(timeout, unit)
时,可能有4个异常:
get(timeout, unit)
-如果这个未来被取消