例如,我有一项任务应该每天在每个晚上8:00-20:00之间执行。
所以我计算了8:00和我的应用开始initialDelay
之间的时间差,并使用Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(command, initialDelay, 1, TimeUnit.MINUTE)
。
问题是,我需要第二个计时器来观察任务并在时钟到达20:00时取消它吗?或者我必须比较每次执行任务的时间是20:00吗?
答案 0 :(得分:0)
您可能需要一个真正的调度程序。
参见Quartz https://quartz-scheduler.org
它应该符合您的需求
对于cron语法:http://quartz-scheduler.org/api/2.2.0/org/quartz/CronTrigger.html
或使用流畅的API http://quartz-scheduler.org/api/2.2.0/org/quartz/TriggerBuilder.html