如果我想安排与特定日期保持一致的重复性任务,则使用ScheduledExecutorService
是有意义的。但它没有办法将firstRunDate +后续延迟传递给scheduleAtFixedRate
方法。我知道我可以自己退出最初的延迟,但有没有理由不提供API?特别是在内部,SES是使用triggerTimes实现的(这是我想要传入的)。
答案 0 :(得分:3)
基于文档:
所有计划方法都接受相对延迟和句点作为参数,而不是绝对时间或日期。将表示为Date的绝对时间转换为所需的形式是一件简单的事情。例如,要在某个未来日期安排,您可以使用:schedule(task,date.getTime() - System.currentTimeMillis(),TimeUnit.MILLISECONDS)。但请注意,相对延迟的到期不一定与由于网络时间同步协议,时钟漂移或其他因素而启用任务的当前日期一致。
看起来好像这是一个决定性的决定。众所周知,Date类有其问题。例如,TimeTask的public void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)
不考虑日光节省时间。
答案 1 :(得分:0)
java.util.Timer
通过TimerTask
提供此方法,因为它有方法
public void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)
但是你失去了Future
的线程池和ExecutorService
支持。
编辑:为了回答你原来的问题,我想作者没有想到用日期重载方法。