如果你需要实现一个接口查询,该查询可能暂时没有返回值,但是你需要持续尝试直到查询到数据
为止,你可以使用 CompletableFuture 结合定时重试的策略来实现这一需求。下面是一个简单的示
例,展示了如何使用 CompletableFuture 和 ScheduledExecutorService 来实现这种重试机制。
import java.time.Duration;
import java.util.concurrent.*;
import java.util.function.Supplier;
public class RetryUntilValue {
private static final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
/**
* 尝试调用一个可能暂时没有值的接口,直到有值为止。
*
* @param supplier 接口调用的 Supplier
* @param timeout 最大等待时间
* @param unit 时间单位
* @param <T> 返回值类型
* @return CompletableFuture<T>
*/
public static <T> CompletableFuture<T> r