Java - Future.get() 多次调用

2022-09-01 11:57:02

在任务完成后多次调用Java的情况下,Java的行为如何?它是否返回相同的结果?或者,如果计算失败,是否会一次又一次地抛出相同的异常?我在文档中找不到有关它的任何内容!Future.get()ExecutionException


答案 1

您可以根据需要随时调用,并且仅当产生结果的任务尚未完成时,它才会阻止。get()Future

如果任务已经完成,它将立即返回任务的结果。

如果任务失败并出现异常,则每次调用时调用都会引发 a。get()ExecutionException


答案 2

我在文档中找不到有关它的任何内容!

你读过它们吗?因为当我阅读它们时,我得到了答案,而这里是....

V get()
throws InterruptedException,
      ExecutionException

如有必要,等待计算完成,然后检索其结果。

Returns:
    the computed result

Throws:
    CancellationException - if the computation was cancelled
    ExecutionException - if the computation threw an exception
    InterruptedException - if the current thread was interrupted while waiting

如果计算未完成,它将等待,如果已经完成,它将尽快返回结果,无论您调用它多少次