completable-future 相关问题

在Java 8中,可以显式完成的Future(设置其值和状态),并且可以包括在完成时触发的依赖函数和动作。

中断CompletableFuture的底层执行

我有这段代码: CompletableFuture timeoutFuture = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])) .orTimeout(1, TimeUnit.SECONDS); // 设置一个

回答 1 投票 0

Java Future 对象在 onComplete 之后从 API 返回值

我有一个如下所示的 API 方法,该方法返回 ResponseEntity。我不知道如何等待它并在 Future onComplete 方法中返回值。 公共响应实体 我有一个如下所示的 API 方法,该方法返回 ResponseEntity<JsonNode>。我不知道如何等待它并在 Future onComplete 方法中返回值。 public ResponseEntity<JsonNode> doSomeAction( @ApiParam(name = "mode", required = true) @PathVariable final String mode, @RequestBody SomeAction action, HttpServletRequest request) throws IOException) { if(mode.equals("POWER"){ Future<JsonObject> future = someAppService.generatePower(action); future.onComplete( result -> { return new ResponseEntity<JsonNode>(JsonHelper.toJsonNode(result.result().encode()), HttpStatus.OK) //above return is not valid but i want to return here as soon as future completes }); } if(mode.equals("someOtherMode"){ //some code here } return new ResponseEntity<JsonNode>(JsonHelper.getObjectMapper().valueToTree(someResponse), headers, HttpStatus.OK); } 基本上,我想在 onComplete 方法中返回值,即在执行generatePower()方法之后,该方法在内部调用一些API,这可能需要一些时间。 我尝试使用 DeferredResult<JsonNode> 但它不起作用。有什么想法吗? 您可以使用 CountDownLatch 来等待结果: public ResponseEntity<JsonNode> doSomeAction( @ApiParam(name = "mode", required = true) @PathVariable final String mode, @RequestBody SomeAction action, HttpServletRequest request) throws IOException) { ResponseEntity<JSonObbject> result = null; CountDownLatch ready = new CountDownLatch(1); if(mode.equals("POWER"){ Future<JsonObject> future = someAppService.generatePower(action); future.onComplete( result -> { result = new ResponseEntity<JsonNode>(JsonHelper.toJsonNode(result.result().encode()), HttpStatus.OK) ready.countDown(); }); } if(mode.equals("someOtherMode"){ //code that updates result variable } if (!ready.await(timeout, SECONDS) { // return error or throw appropriate exception } return result; }

回答 1 投票 0

thenCompose 什么时候对 Java 中的 CompletableFuture 有意义

我是 Java 异步编程新手,并试图了解何时使用 thenCompose() 方法有意义。 考虑以下伪代码: CompletableFuture 第一个步骤 = CompletableFu...

回答 1 投票 0

Java 意外的异步行为

我期待 Java 中出现意外行为(Java 17,Spring Boot 应用程序)。该方法用于测试,我直接从主方法调用它。 主线程不应该被阻塞在...

回答 1 投票 0

Unittest验证异步方法Java

我想验证当运行方法A时,我的代码通过方法B运行(1次),如下所示 公共类A类{ @注入 @Named("执行者") ExecutionContextExecutor

回答 1 投票 0

Java 8 到 Java 17 ThreadLocal 问题

我有在Java 8中运行良好的代码,但是当我将其迁移到Java 17时,它就不起作用了。它涉及到ThreadLocal和CompletableFuture.runAsync。 以下是课程: 公共类 UriParameterHandl...

回答 2 投票 0

Java8 到 Java17 ThreadLocal 问题

我的代码在 Java8 中运行良好,但当我将其迁移到 Java17 时却不起作用。涉及到ThreadLocal和CompletableFuture.runAsync。 以下是课程: 公共类 UriParameterHandler ...

回答 1 投票 0

无法调用 toCompletableFuture(),因为在使用返回 CompletionStage 的方法时 apply(Object) 的返回值为 null<Void>

我陷入了一个错误: java.util.concurrent.CompletionException:java.lang.NullPointerException:无法调用“java.util.concurrent.CompletionStage.toCompletableFuture()”,因为...

回答 1 投票 0

我可以使用 CompletableFuture 重复方法直到值为 true

我有一个 Java 方法,可以从数据库表单元格中获取值。 我们将其命名为 jdbcTemplate.queryForObject() 我想每 2 分钟运行一次这个方法,直到单元格的值变为 true....

回答 2 投票 0

使用 Mockito 测试 CompletableFuture.supplyAsync

我正在尝试使用mockito测试 CompletableFuture.supplyAsync 函数,但测试未完成可能是因为可完成的未来没有返回。我不确定我在

回答 2 投票 0

测量CompletableFuture链中的单个执行时间

我有几个异步 api 调用组合在一起形成一个完整的 future 链。链的每个部分都取决于前一个阶段,即如果前一个调用返回非空数据,那么我们就跳过...

回答 0 投票 0

控制器甚至在使用异步和可完成的未来之后等待

我正在开发一个 Spring Boot 应用程序,我想使用 CompletableFuture 和 @Async 注释使我的控制器异步。为了测试实现,我特意添加了一个线程。

回答 1 投票 0

如果我为 thenApplyAsync 和 supplyAsync 提供不同的执行器怎么办?

假设我正在使用 supplyAsync 方法创建异步任务,并为此使用执行程序 E1。 然后对于 thenApply 或 thenApplyAsync,我提供的执行程序是 E2。 thenApply 将如何使用 E1 和 E2? ...

回答 0 投票 0

CompletableFuture 方法的单元测试

我有以异步方式调用 connector.runSomeService(data) 并处理方法 handleServiceResponse(res, node) 中的响应的方法。 public void runServiceOnAllNodes(集合 ...

回答 2 投票 0

如何使 CompletableFuture 异常函数返回 Collection 类型?

我从事的项目有一些代码可以简化为以下两个功能: CompletionStage> fn1(字符串前缀){ 返回 fn2() .the...

回答 0 投票 0

使用多线程的 Java API 调用

第一次 API 调用返回 18000 条记录, 每个 18000 条记录都是另一个 API 调用,他们可以在每个 5-200 的范围内给出响应。必须调用这 200 个中的每一个,并且必须将响应保存在...

回答 1 投票 0

CompletableFuture 没有被执行[重复]

CompletableFuture 有一个很奇怪的问题 导入 java.util.concurrent.CompletableFuture; 导入 java.util.concurrent.ExecutorService; 导入 java.util.concurrent.Executors; 公开课

回答 1 投票 0

java springboot中如何实现异步非阻塞调用依赖任务

我正在生成 excel 文件并将其提供给 UI。 Excel 文件包含来自两个第三方 api 的数据。第一个第三方调用将返回数据列表,然后我比较了数据库中的这些数据......

回答 0 投票 0

使用 Java 将三个可完成的未来合并为一个

以下 3 种方法返回 CompleteableFuture,我需要的内容在 JsonObject 的 value 属性上,所以最终我需要做一些类似 response.getJsonAr 的事情...

回答 1 投票 0

CompletableFuture join() 似乎没有等待完成

我面临一个问题,我正在顺序执行两个 CompletableFuture 对象。我的意图是让第一个完成,然后才开始执行第二个。所以在其他...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.