gpt4 book ai didi

java - 如何中断 ScheduledExecutorService

转载 作者:行者123 更新时间:2023-11-30 06:34:27 27 4
gpt4 key购买 nike

我有一个 ScheduledExecutorService,我用它每隔一分钟运行一个 updateIndex() 方法。但是,如果在上次刷新和下一次刷新之间的一分钟内对资源进行了更改,我希望立即调用 updateIndex() ,然后让执行程序服务恢复正常计划;即下一次更新将在一分钟内进行。但是,我在文档中没有看到任何内容表明有能力执行此操作。有什么想法吗?

最佳答案

public static void updateIndex() {
Runnable runnable = () -> {
//Do your logic here
};
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
service.scheduleAtFixedRate(runnable, 0, 1, TimeUnit.MINUTES);
}

根据 JavaDocs

java.util.concurrent.ScheduledExecutorService.scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)

创建并执行一个周期性操作,该操作首先在给定的初始延迟后启用,然后在给定的周期内启用;也就是说,执行将在initialDelay之后开始,然后是initialDelay+period,然后是initialDelay + 2 * period,依此类推。如果任务的任何执行遇到异常,则后续执行将被抑制。否则,任务只会通过取消或终止执行器来终止。如果此任务的任何执行时间超过其周期,则后续执行可能会延迟开始,但不会并发执行。

关于java - 如何中断 ScheduledExecutorService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45439694/

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