gpt4 book ai didi

java - ScheduledExecutorService - 检查计划任务是否已经完成

转载 作者:搜寻专家 更新时间:2023-11-01 00:59:17 24 4
gpt4 key购买 nike

我有一个服务器端应用程序,客户端可以在其中请求重新加载配置。如果客户端请求重新加载配置,则不应立即完成,而应延迟 1 分钟。如果另一个客户端在同一分钟内也请求重新加载配置,则应忽略该请求。

我的想法是使用 ScheduledExecutorService 安排任务,例如:

 ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
service.schedule(new LoadConfigurationTask(), 1, TimeUnit.MINUTES);

public class LoadConfigurationTask Runnable {
public void run() {
// LoadConfiguration
}
}

如何检查 LoadConfigurationTask 是否已安排但尚未执行,以便能够在重新加载配置之前忽略进一步的请求?

最佳答案

您可以像这样简单地获取对 ScheduledFuture 的引用:

ScheduledFuture<?> schedFuture = service.schedule(new LoadConfigurationTask(), 1, TimeUnit.MINUTES);

现在有了 future ,您可以检查任务是否完成:

schedFuture.isDone();

或者更好的是,检查执行开始前还剩多少时间:

schedFuture.getDelay(TimeUnit.MINUTES);

不需要外部变量来跟踪状态。

关于java - ScheduledExecutorService - 检查计划任务是否已经完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21442322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com