当一个Future任务在命中return语句时被认为是完成了isDone()==true
吗?
例如:
ExecutorService executor = newSingleThreadExecutor();
Future<> result = executor.submit(new Runnable()
{
@Override
public void run()
{
return;
}
}
结果是在return
?
答案 0 :(得分:3)
或多或少。 javadoc对于它的确切含义是不明确的,但通常,当callable返回时,isDone()
之后很快就会为真(或者如果发生异常,则同样如此)。
答案 1 :(得分:2)
Future.get
的完成被视为确定了Future
的完成情况。
Future表示异步计算的结果。提供方法以检查计算是否完成,等待其完成,以及检索计算结果。 结果只能在计算完成时使用方法get检索,必要时阻塞直到准备好。取消由cancel方法执行。提供了其他方法来确定任务是否......
换句话说,直到时间Future
没有完成,才会阻止对Future.get
的调用,因此Future.get
的完成应被视为Future
的完成}(正常或异常)
P.S。: Future.isDone
只应用于检查状态,而不是Future
完成时的指示。