Java-Future.get()多次调用

Java-Future.get()多次调用,java,future,Java,Future,如果Java的Future.get()在任务完成后被多次调用,它将如何工作? 它是否返回相同的结果?或者,如果计算失败,是否会一次又一次地抛出一个ExecutionException? 我在文件里找不到关于它的任何东西 您可以随时调用Future上的get(),只有在生成结果的任务尚未完成时,它才会阻塞 如果任务已经完成,它将立即返回任务的结果 如果任务因异常而失败,则每次调用get()都会抛出ExecutionException 我在文件里找不到关于它的任何东西 你读过吗?因为当我读到它们的时

如果Java的
Future.get()
在任务完成后被多次调用,它将如何工作? 它是否返回相同的结果?或者,如果计算失败,是否会一次又一次地抛出一个
ExecutionException
? 我在文件里找不到关于它的任何东西

您可以随时调用
Future
上的
get()
,只有在生成结果的任务尚未完成时,它才会阻塞

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

如果任务因异常而失败,则每次调用
get()
都会抛出
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

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

课堂文档(和)回答了大部分问题-一定是在阅读其他内容。你也可以自己试试看。你在读什么?如有必要,请等待计算完成,然后检索其结果。没有最后一部分。你从哪里得到的信息?我不想依赖未记录的行为,我知道如果我尝试会发生什么,但我想要的是准确的合同。@MarcoServetto,所以请仔细阅读这行,如果过程未完成,它将等待,或者它将返回结果,如果你反复调用异常,它不会出现在任何地方。
我通过尝试获得该信息,然后得出结论
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