gpt4 book ai didi

java - ScheduledExecutorService.scheduleAtFixedRate 并将 initialDelay 设置为过去的日期

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

我正在使用 Java 开发一个调度系统,它根据 startDateendDateoccurrence(每小时、每天、每周、每月、星期一等)。最初我使用 TimerTimerTask 类来安排提醒:

Timer timer = new Timer();
timer.scheduleAtFixedRate(reminder, firstDate, period);

我最近切换到 ScheduledExecutorService 这样我就可以更好地控制取消事件。 ScheduledExecutorService 适用于重复提醒,除了过去使用 startDate 重新安排提醒的情况。 scheduleAtFixedRate 函数只允许您为 initialDelay 指定long 值,而不是实际的Date 对象:

ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate(reminder, initialDelay, period, unit);

这带来了一个问题,因为传入一个负数 initialDelay 仍然会导致事件立即被触发,从而导致它在现在 + 期间再次发生em>,而不是 startDate + period

关于如何使用过去的开始日期(重新)安排提醒有什么想法吗?

最佳答案

只需快速检查一下日期是否在过去,然后创建一个新的临时开始日期时间,它是现在开始的增量。

关于java - ScheduledExecutorService.scheduleAtFixedRate 并将 initialDelay 设置为过去的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3196888/

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