java - 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 循环中再次重新创建这个链,但这似乎是一个丑陋的解决方案。
解决方案
ScheduledExecutorService
例如,考虑使用scheduleWithFixedDelay()
。你可以把当前执行的逻辑Future
放到Runnable
. 如果您不需要任何延迟,可以将其设置为 0。从实现中我建议首先考虑ScheduledThreadPoolExecutor
. 如果需要,您可以覆盖shutdown()
并实现所需的关闭逻辑。
推荐阅读
- python - 如何抓取一个aspx文件
- python - django-simple-history - 过滤模型截至日期
- algorithm - 近似比
- ansible - 我可以使用从多个主机收集的值 set_fact 并将它们全部用作单个主机上的数组吗?
- python-2.7 - 在 Python 2.7 中打开/关闭 USB 端口的电源
- javascript - 如何将多个图像添加到传单地图?
- python - 使用 discord.py 制作机器人,根据状态消息为成员分配角色
- r - 仅修改某些列的名称
- websocket - 嵌套js websocket连接不适用于角度11
- python - ValueError:一个数组的多个数组长度不同。将 dtype=object 转换为 dtype=float32