如何在一定时间内重复 运行 一种方法?

How can I run a method repeatedly for a set amount of time?

我一直在使用 Schedule Executor 服务每 3 秒 运行 我的代码。在我的情况下,有没有办法在 24 小时内每 3 秒 运行 一次?我的代码看起来像这样。它的作用并不重要,所以我将其全部删除。我唯一关心的是一个 List<String>,原因是在这 24 小时后我想用这个列表做更多的事情。

public static void main(String[] args) throws Exception {
    ScheduledExecutorService ses = Executors.newScheduledThreadPool(2);
    ses.scheduleWithFixedDelay(new Runnable() {
        
        // nonImportantVariables here

        List<String> importantList = new ArrayList<String>();
    
        public void run() {
            //Not important code
    }, 0, 3, TimeUnit.SECONDS);

    // AFTER 24 HOURS I WOULD LIKE TO PERFORM TASKS ON IMPORTANT LIST
    }
}

我曾考虑过添加一个循环,使其 运行 达到 28,800 次(即 24 小时内有多少 3 秒),但这似乎是一个愚蠢的解决方案,而且我会 运行 进入这个问题,这不会考虑代码需要多长时间 运行 所以最终会更多。

我的第二个想法是第一次迭代 运行 我可以使用 Date 对象。使用此 Date 对象,我可以以某种方式将 24 小时添加到此对象上,并有一些方法将当前 Date 对象与第一次迭代时的 Date 对象进行比较 + 24 小时。

我似乎在 Schedule executor service 的文档中找不到任何可以设置 运行 命令执行次数的内容。非常感谢对这些想法或不同解决方案的任何改进。

您可以使用另一个调度程序,您可以在其中提交另一个任务,该任务 运行 只会延迟 24 小时一次,并且会做两件事。

  1. 关闭第一个调度程序,这将停止执行您的原始任务。
  2. 处理您的列表