如何在特定时间停止/取消ScheduledExecutorService中的任务?

时间:2015-11-26 09:08:09

标签: java concurrency scheduled-tasks

例如,我有一项任务应该每天在每个晚上8:00-20:00之间执行。

所以我计算了8:00和我的应用开始initialDelay之间的时间差,并使用Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(command, initialDelay, 1, TimeUnit.MINUTE)

问题是,我需要第二个计时器来观察任务并在时钟到达20:00时取消它吗?或者我必须比较每次执行任务的时间是20:00吗?

1 个答案:

答案 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