java - 等待 javaStream 上的 forEach 结束

标签 java asynchronous

我使用的是 JDK 11, 我有这个:

 @Async("somegthing")
public void process(Some some) {...}

...
{ 
  list.stream()
    .someOperationWhoCanOnlyBeDoneOneAStream()
    .forEach(::process);

  someOtherMethod();
 }

在启动 someOtherMethod 之前,我需要等待 foreach 结束。 我该怎么做? 我认为这是显而易见的,但我没有任何异步方面的技能

最佳答案

其中一种方法:

 import java.util.concurrent.CompletableFuture;
 ....
 @Async("somegthing")
 public void process(Some some) {...}

 ...
 { 
      CompletableFuture<String> task = CompletableFuture.supplyAsync(() -> {
       list.stream()
         .someOperationWhoCanOnlyBeDoneOneAStream()
         .forEach(::process);
         return "completed";
      });
       task.thenAccept(finres -> {
        someOtherMethod();
      });
 }

关于java - 等待 javaStream 上的 forEach 结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61899240/

相关文章:

java - 在 Matchers.eq 中调用 spy 方法时,参数匹配器的使用无效

java - 如何使用 gridControl 组件获取替代行颜色

java - 在另一个方法中使用 onSensorChanged() 的值

java - 使用java创建列表

c# - 异步 CTP - 如何使用异步/等待调用 wcf 服务?

java - 了解 Comparator 调用比较方法

node.js - 异步http调用后更新变量值

node.js - 如何使用 Node、Async 和 Mongoose 计算作用域变量的总和?

javascript - 双异步AJAX函数

javascript - N个异步线程的互斥