问题标签 [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.

0 投票
1 回答
982 浏览

web-services - Spring Async - 超时完成后带有处理程序的 CompletableFuture

我有一个场景,我使用 Spring Async 从我的 REST API 调用外部 Web 服务。它返回一个 CompletableFuture ,很明显我们可以等待一段时间,直到外部异步操作完成。当我发生超时时,主线程返回状态 202。我想在异步过程完成时进行处理,以便我需要更新 db 中的字段。我们从哪里得到这个处理程序或者我如何实现这个?因为主线程已经返回。

之前在同一个问题上发布了一个问题。 通过回调主请求实现外部服务的异步流程 - Spring 但现在我让它更具体

0 投票
2 回答
2044 浏览

java - CompletionStage:为什么在 CompletableFuture 中定义了 allOf 或 anyOf

我有一个使用接口CompletionStage的框架,我很好奇为什么在CompletableFuture中定义了辅助方法anyOfallOf发现。

似乎他们应该在接口而不是实现上操作?

到目前为止,我对 CompletionStage 界面非常不满意。是否有其他 Java 库兼容 CompletionStage 但有人可以推荐不同的超集接口?

或者也许是一些用额外的辅助方法编写的库来使用 CompletionStage ?

0 投票
0 回答
156 浏览

java - CompletionStage:在异常块内返回 CompletionStage

CompletionStage如果发生异常,有没有办法返回一个新的?

的 APIexceptionally似乎不允许您这样做。有没有解决的办法?

基本上我想为这个案子做flatMap( thenCompose)exceptionally

0 投票
1 回答
909 浏览

java - 从 Completable Future 中的 lambda 抛出时未报告的异常

当我编译下面的代码时,我收到以下错误:

编码:

我已经宣布它被抛出。我错过了什么?

完整代码在https://github.com/spakai/composite_indexes

0 投票
1 回答
987 浏览

intellij-idea - 实现 CompletableFuture 时出现错误提示“CompletableFuture(Object) 在 CompletableFuture 中具有私有访问权限”

我正在执行CompletableFuture如下但收到错误消息

CompletableFuture(Object)有私人访问权CompletableFuture

我希望解决方案来克服这个错误?

0 投票
1 回答
114215 浏览

java - 带有集合或列表的 Java 8 CompletableFuture.allOf(...)

Java 8 有一个函数,当所有给定的期货都完成时,CompletableFuture.allOf(CompletableFuture<?>...cfs)它会返回一个完成的函数。CompletableFuture

但是,我几乎总是不处理CompletableFutures 数组,而是处理List<CompletableFuture>. 当然,我可以使用该toArray()方法,但最终不得不在数组和列表之间不断地来回转换有点痛苦。

如果有一种巧妙的方法来CompletableFuture<List<T>>换取 a List<CompletableFuture<T>>,而不是不断地投入中间数组创建,那将是非常好的。有谁知道在 Java 8 中执行此操作的方法?

0 投票
1 回答
805 浏览

java - 我是否应该在每个服务方法上加上 @Async 以使我的应用程序在 Spring 中完全支持异步?

我有一个非常简单的控制器,如下所示:

和服务:

FoodRepository 只不过是一个 JpaRepository 。

到目前为止,流程将是:Controller --> Service --> Repository

现在,我希望我的所有 Rest API 都支持异步。在这种情况下,服务调用存储库来查询数据。我应该将@Async 注释放在FoodService 的方法中以使查询任务异步吗?

在扩展中,我是否应该将@Async注释放在我的所有服务方法以使我的应用程序完全支持异步?

据我所知,Spring 中的 @Async 注解支持异步,而CallableDeferredResult做同样的事情,那我应该选择哪一个呢?

0 投票
2 回答
119 浏览

java - 基本任务的 Java 8 并发最简单规范形式

我有两个问题: 1.Callable在 Java 8 中将 a 作为任务运行、捕获和处理结果的最简单规范形式是什么?2. 在下面的示例中,保持主进程打开直到所有任务完成的最佳/最简单/最清晰的方法是什么?

这是我到目前为止的示例——这是 Java 8 中最好的方法还是有更基本的方法?

有没有更简单、更清晰的 Java-8 方法来做到这一点?以及如何消除有System.in.read()利于更好的方法?

0 投票
1 回答
506 浏览

java - 使用 ExecutorService 的 Java 应用程序永远不会关闭

我正在尝试编写一个程序,将工作分配给几个 java 工作线程。问题是当我从命令行运行它时它永远不会返回。我没有得到我的提示,最终必须 ctrl-c 关闭程序。

我已将其简化为以下简单的案例

这个程序的输出是

就是这样。它挂在那里。没有提示。如果我删除 ExecutorService.submit 行,我会得到

程序自然关闭。

我需要在 ExecutorService 上执行一些我没有正确执行的清理任务吗?我假设 .get() 调用加入了线程。不是这样吗?

0 投票
2 回答
1053 浏览

java - CompletableFuture 需要更多时间 - Java 8

我有两个技术上相同的代码片段,但是第二个比第一个多花 1 秒。第一个在 6 秒内执行,第二个在 7 秒内执行。

上一个需要 6s,下一个需要 7s 这是代码的链接

请解释为什么与第一个代码相比,第二个代码始终多花费 1 秒(额外时间)

下面是方法getYearlyEarningForUserWithEmployer的签名。只是分享,但应该不会有任何影响

这是代码的链接