当前位置: 首页 > 知识库问答 >
问题:

JavaCompletableFuture,何时调用uture.handle?

柳正志
2023-03-14

Q1。我的理解是完成如果未来正常或异常完成,则调用uture.handle。但是超时场景呢?

Q2。在哪里检查完整未来的默认超时设置?如何更改它?未来超时后会发生什么?(完成还是异常?)

Q3。只要未来“完成”(完成或超时或任何最后阶段),我就需要doThings()。是否有保证在未来“完成”后调用的方法?我应该把doThings()放在哪里?

从新到完整的未来。更喜欢用Java8回答。谢谢你的帮助。

共有1个答案

欧阳正德
2023-03-14

Java之前的CompletableFuture中没有超时功能

只有两种方法可以完成一个可完成的未来,通常(使用值)或例外(使用可丢弃的)。因此,任何不提供结果值的完成都必须例外地完成,提供可丢弃的。

因此,取消是通过一个异常的取消异常来完成未来的。从Java开始

这意味着在任何一种情况下保证在完成时执行的任何阶段,当正常或异常完成时,例如与句柄when完成链接,无论先决条件阶段是否失败异常、已被取消或超时过去。您必须检查提供的可抛出对象以找出发生了哪些情况。

因为Java中已经存在TimeoutException

为了解决最后一个开放点,即使在未来的版本中,也没有默认的超时设置。只有超时,如果您明确请求它(提供您预期的超时值)。

 类似资料:
  • 问题内容: 什么时候 叫?我有一个活动,需要在调用onMeasure之后执行一项操作。 我的问题与此处未回答的问题相同。在查看文档指出onMeasure当被称为requestLayout()被调用时,它显然是对自身视图调用时它认为是不能再目前的范围内配合。 但是,这不能告诉我何时我的活动可以假设我的视图已被测量。我已使用此代码将ImageView扩展为TouchImageView。建议在这里使用o

  • 在什么情况下会调用applicationWillTerminate?例如,如果代码中出现崩溃,是否会调用它? 苹果的doc对此语焉不详,它只说当系统出于某种原因需要终止它的时候。 对于不支持后台执行或针对iOS3.x或更早版本链接的应用程序,当用户退出应用程序时,总是调用此方法。对于支持后台执行的app,用户退出app时一般不会调用此方法,因为在那种情况下app只是移动到后台。但在app在后台运行

  • ViewModels是独立于activity/片段生命周期还是仅仅独立于其配置更改。它们何时将不再存在,随后的onCleared()方法将被调用。viewModel可以与另一个activity共享吗? 一种情况: 这种分享是否可能,是否是一种好的做法。 此外,由于应用程序生命周期回调,onpause->onstop->ondestroy对这两个程序都是相同的 1.activity旋转和 2.act

  • 我的问题可以是如何使用RXJava2的CompositeDisposable的重复?但要求再澄清一个疑点。根据接受的答案 在我的例子中,我使用片段作为我的视图(MVP中的视图层),在某些情况下,我将活动片段添加到backstack,这实际上不会杀死片段,而只是杀死它的视图。这意味着只调用而不调用。稍后,我可以回到后面堆栈中的相同片段,所以只有它的视图被重新创建。我有一个作为我的的成员,它保存订阅。

  • 问题内容: 现在,我使用一个静态布尔值来告诉初始化何时发生。有没有更简单的方法知道我已经调用了initialize? 谢谢!!! 解决了!!!!非常感谢您的评论。您需要在扩展应用程序的类中初始化解析,然后将其作为应用程序(而不是其他活动)添加到清单文件中。 :) 这是我使用Parse的课程: 这是我的android清单文件 问题答案: 创建一个应用程序类,然后在onCreate中初始化解析。 在此

  • 问题内容: 当消化周期正在发生的事情,我很困惑,是基于每50ms定时器它定期调用(因为它说,在这里,并暗示在这里,或者它的每一个进入的角度范围内(因为它说,事件发生后呼吁在这里,在这里还有这里? 重要的示例: 在我的模型中,我有一个名为3的变量。在我的HTML中,我有。触发按钮单击之类的事件并在控制器中引发一个处理程序,该处理程序内的代码为: 假设UI线程未被阻止,则单击按钮后用户将看到什么?他只