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

如何连锁完成期货

司徒志
2023-03-14

现在,我有三个函数:updateFieldFromCollection1()、InsertFromCollection1ToCollection2()和deleteFromCollection1()。

这些调用并不是相互依赖的,但是当我想将它们完全链接到Future时,它们必须按照给定的顺序一个接一个地运行。

update-> insert -> delete

这些调用不会返回任何结果,所以我使用了runAsync和completableFuture的run方法。并相应地把他们锁起来。我在msgIds上迭代,它是一个字符串列表。

msgIds.stream().forEach(msgId -> CompletableFuture.runAsync(() ->  
 {updateFieldFromCollection1()}).thenRun(() -> 
 {insertFromColletion1ToCollection2()}).thenRun(() ->  
 {deleteFromCollection1()}));

以上代码有效(更新-


共有1个答案

程博学
2023-03-14
msgIds.stream().forEach(msgId -> {
updateFieldFromCollection1();
 CompletableFuture.runAsync(() -> 
 {insertFromColletion1ToCollection2()}).thenRun(() ->  
 {deleteFromCollection1()}));

更新必须在completableFuture之外进行。然后它就像一个符咒:)

 类似资料:
  • 我有一个现有的接口链,我想作为一个反应器运行,而不是管理我自己的线程和队列 我如何链接该结果,使其调用与批量的?

  • 到目前为止我在Java方面的努力

  • 问题内容: 当我编译此代码片段时。 产生以下字节码 因此常量池中已经存在字符串文字“ string”,该常量池在此行被压入堆栈。 引用JSL 从JLS§4.12.4-最终变量: 基本类型或String类型的变量是最终变量,并使用编译时常量表达式(第15.28节)进行了初始化,该变量称为常量变量。 同样来自JLS§15.28-ConstantExpression: 使用String#intern()

  • 问题内容: 在我的应用程序中,我尝试为用户打印出凭证页面,如下所示: “ ”是我的页面中的,用于存储有关凭证的信息。 它有效,并且打印页面弹出。但是,我希望用户一旦在浏览器的弹出式打印对话框中单击“ ”或“ ”,便可以升级该应用程序。 例如,我想在弹出窗口关闭后将用户重定向到另一个页面: 如何确定何时关闭弹出的打印窗口或打印完成? 问题答案: 在FireFox和Internet Explorer中

  • 问题内容: 这可能是一个愚蠢的问题,但是由于找不到答案,我不得不提出这个问题。 在交互式python中,我想处理一条消息: 一切正常,但是…如何阻止它获取输入并将其保存到message变量中?使用ctrl + c停止将停止整个过程,因此没有输入要保存在任何地方。我想我找不到一个简单的答案… 问题答案: 对于基于Unix的系统: 您好,您可以录音: 通过发送EOF关闭标准输入(stdin)。 范例:

  • 问题内容: 我的问题: 如何在a上执行一堆线程对象并等待它们全部完成后再继续? 我是ThreadPoolExecutor的新手。因此,此代码是测试以了解其工作方式。现在我什至都不用对象填充,因为我不理解如何在不调用另一个队列的情况下开始队列。无论如何,现在我只是打电话给我,但我认为我仍然缺少一些东西。任何提示都很棒!谢谢。 RunnableObject类: 问题答案: 你应该循环