问题标签 [completable-future]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - java多嵌套CompletionStage相当于“flatMap”?
因此,考虑到我有以下示例:
我的问题是整个CompletionStage<CompletionStage<CompletionStage<CompletionStage<Boolean>>>>
多嵌套的未来类型。是否可以CompletionStage<Boolean>
通过使用 Scala 之类的东西来减少它,flatMap
还是有另一种方法可以做到这一点?
java - 扩展 CompletableFuture 时类型不匹配
我正在尝试扩展CompletableFuture
为thenCompose
after handle
,但出现编译器错误:
这是我的代码:
作为记录,我试图隐藏这个响应thenCompose
中使用的基本上是:
java - JavaEE 应用服务器中的 CompletableFuture/parallelStream
鉴于新的 Java8,我们正在为异步任务获得非常好的特性,例如 CompletableFuture 和 .paralellStream()。如果您按照我的理解在 Java SE 中运行它,您将使用 ForkJoinPool,但是如果我在例如 Wildfly 或 TomcatEE 中运行以下示例会发生什么?
会发生什么,如果我会从哪里借用我的资源
- 这些示例在 @Stateful bean 中运行
- 这些示例在 @Stateless bean 中运行
- 这些示例在 CDI bean 中运行
java-8 - 仅在满足条件时链接多个 CompletionStage
我有几种CompletionStage
我想链接的方法。问题是第一个的结果将决定是否应该执行下一个。现在,实现这一点的唯一方法似乎是将“特殊”参数传递给 next CompletionStage
,因此它不会执行完整的代码。例如:
由于整个代码取决于第一个someCondition
(如果是,false
那么结果将是RESULT_1
,如果不是,那么应该执行整个代码)这个结构对我来说有点难看。有什么方法可以决定是否应该执行2nd ( thenCompose(...)
) 和 3rd ( ) 方法?thenApply(...)
java - 如果在 runAsync 调用之后进行链接,thenRunAsync(与 thenRun 相对)是否有任何区别?
在下面的代码中,调用thenRunAsync有什么不同吗?我应该只调用thenRun吗?
针对评论进行详细说明:如果我要改用此代码,
它的行为会有什么不同吗?
在这两种情况下,行为都是非阻塞的,并且第二个任务在第一个任务完成之前不会运行,据我所知,无论如何。
java - 在 java 中,我如何处理 CompletableFutures 并获得第一个完成的理想结果?
通常使用 CompletableFuture 我会在结果可用后立即调用 thenApply 或其他一些方法来执行某些操作。但是,我现在有一种情况,我想处理结果,直到收到肯定的结果,然后忽略所有进一步的结果。
如果我只想获取第一个可用结果,我可以使用 CompletableFuture.anyOf (尽管我讨厌将列表转换为数组只是为了调用 anyOf)。但这不是我想要的。我想获得第一个结果,如果它没有理想的结果,那么我想处理第二个可用的结果,依此类推,直到我得到理想的结果。
这是一个简单的示例,它遍历所有结果并返回它找到的第一个大于 9 的值。(请注意,这不是我真正的任务。这只是一个简单的示例。)
当然,该示例从一开始就检查结果,而不是在完成时查看结果。所以这是一个完成我想要的东西,但代码更复杂的一个。
有没有我可以做到这一点的api?
甚至更好:
java - 如何在使用 CompletableFuture.get() 时捕获 CompletableFuture.completeExceptionally() 抛出的异常?
如何在使用 CompletableFuture.get() 时捕获 CompletableFuture.completeExceptionally() 抛出的异常?
这是一些代码
这是非常丑陋的。同样,我只想用尽可能少的代码行并以最简洁的方式捕获 MyException。不确定 isCompletedExceptionally() 是否异常,join() 可以帮助以最简单的方式捕获 MyException。如果有怎么办?
java-8 - Java 8 CompletableFuture.thenApply()
最后在 Java 8 中使用 CompletableFuture dealio。我遇到了一个我不太理解的编译错误(在我的 IDE 中)。
我有一个List<String>
要附加到 URL 的标识符,然后异步调用每个 url。到目前为止,我只有这几种方法。
我得到的编译器错误出现this::sendRequest
在第一种方法中。它抱怨我的班级没有定义sendRequest(Object)
方法。
但是我想通过输入identifiers
我不需要担心在我的 lambda 表示法中调用类型?我什至不确定如何使用::
运算符指定类型。也许我什至不应该使用::
运营商?我很困惑。
lambda - 使用 CompletionStage 返回结果
我是玩框架和Java8的新手。我正在尝试在 Play 中编写一个简单的 Web 服务,它符合异步模型并允许 Web 服务调用快速返回,从而为异步线程留下繁重的工作。
我有一个非常基本的操作
调用中的真正处理必须从数据库中加载人员数据。db方法是
dbMethod 本身是异步的并返回 CompletionStage>。
所以我的问题是我无法理解如何最好地对 Web 服务进行编程以使该方法不会阻塞。
我可以在我的处理程序中做这样的事情
问题在于控制器在“get”方法处阻塞,并且它抛出除了使用标准 try-catch 块(这也使其非异步)之外我不知道如何处理的异常。
我也尝试过这样的事情
但这会产生编译错误。
我将非常感谢这里的一些帮助;因为我对 Java 异步编程非常陌生,尽管阅读了很多教程,但我不清楚如何最好地使用这些教程。
谢谢你们。