java如何安排每小时开始的任务
我正在开发一个服务,假设每小时都开始,并在一小时内重复(下午1:00、下午2:00、下午3:00等)
我尝试了如下操作,但有一个问题是,第一次我必须在一小时开始时运行程序,然后这个调度程序将重复它
ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleWithFixedDelay(new MyTask(), 0, 1, TimeUnit.HOURS);
有没有建议在我运行程序时重复我的任务
问候, 伊姆兰
# 1 楼答案
krishnakumarp的answer中的
millisToNextHour
方法在Java 8中可以变得更加简洁和直接,这将产生以下代码:# 2 楼答案
我还建议Quartz这样做。但是可以使用initialDelay参数使上述代码在一小时开始时首先运行
# 3 楼答案
如果您可以使用外部库,那么Quartz提供了非常灵活且易于使用的调度模式。例如
cron
模式应该非常适合您的情况。下面是一个安排每小时执行一个Job的简单示例:看看tutorial和examples,找出适合你口味的配方。它们还展示了如何处理错误
# 4 楼答案
如果您在服务中使用spring,那么您可以直接使用基于注释的调度器@Schedule annotation,该调度器以cron expression作为参数或延迟(以毫秒为单位),只需将此注释添加到您想要执行的方法之上,此方法就会被执行。享受