首页 > 解决方案 > Java 11:循环执行 CompletableFuture

问题描述

我正在寻找一种循环 CompletableFuture 的方法。假设我有

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> "Hi");
 
future.thenApplyAsync(result -> {
    System.out.println(result + " all"); //output Hi all
    return result;
})

我想在它完成后重复这个链,直到我调用 cancel()。可能吗?我可以在 for 循环中再次重新创建这个链,但这似乎是一个丑陋的解决方案。

标签: javacompletable-future

解决方案


ScheduledExecutorService例如,考虑使用scheduleWithFixedDelay()。你可以把当前执行的逻辑Future放到Runnable. 如果您不需要任何延迟,可以将其设置为 0。从实现中我建议首先考虑ScheduledThreadPoolExecutor. 如果需要,您可以覆盖shutdown()并实现所需的关闭逻辑。


推荐阅读