public static SimpleFuture allOf(List<SimpleFuture> futures) {
    return new SimpleFuture(
        CompletableFuture.allOf(
            futures.stream().map(f -> f.completedFuture).toArray(CompletableFuture[]::new)));
  }
Return until completedFuture is done, which means task or process is truly finished
amoro-common/src/main/java/org/apache/amoro/process/SimpleFuture.java