有没有人知道Java API中的标准功能,用于调度任务n + 1< interval>任务n之后的毫秒数,与任务n花费的时间无关?
我现在已经两次实现了这个功能(两个不同的项目),因为在我偶然发现的情况下,这是实现它的最正确方法。
你可能会说这是微不足道的(事实确实如此),但如果它不是经常发生的话,我就没有提及它。
我的主要观点是,如果“追赶”策略被认为是“正确的”,那么我的方法在很多情况下同样正确,我认为scheduleAtFixedRate应该包含一个选项。这对我来说不是问题,我只是想知道是否有人知道这是否已经在Java API中实现,所以我不必立即编码。
答案 0 :(得分:0)
这可以通过schedule()
方法完成(假设正在使用java.util.Timer
)。它提供固定延迟而不是固定速率。
答案 1 :(得分:0)
经过一些(重新)搜索,我相信scheduleWithFixedDelay的ScheduledExecutorService方法正是如此。
答案 2 :(得分:0)
我认为这完全符合您的要求。 Java.util.timer - > schedule(TimerTask任务,长延迟,长周期)。这用"固定延迟"执行。 根据文档:在固定延迟执行中,每次执行都是相对于上一次执行的实际执行时间进行调度的。如果执行因任何原因(例如垃圾收集或其他后台活动)而延迟,则后续执行也将延迟。