本文主要是介绍Java-一个接口查询没有值,需要多次调用直到有值,怎么解决?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
如果你需要实现一个接口查询,该查询可能暂时没有返回值,但是你需要持续尝试直到查询到数据
为止,你可以使用 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> retryUntilValue(Supplier<T> supplier, long timeout, TimeUnit unit) {CompletableFuture<T> resultFuture = new CompletableFuture<>();Runnable task = () -> {
这篇关于Java-一个接口查询没有值,需要多次调用直到有值,怎么解决?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!