如何在特定时间 stop/cancel ScheduledExecutorService 中的任务?
How to stop/cancel a task in ScheduledExecutorService at particular time?
例如,我有一个任务应该在 8:00-20:00 之间每天每分钟执行一次。
所以我计算 8:00 和我的应用程序启动时间 initialDelay
之间的时间间隔,并使用 Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(command, initialDelay, 1, TimeUnit.MINUTE)
。
问题是,我是否需要第二个计时器来观察任务并在时钟到达20:00时取消它?或者我是否必须在每次执行任务时比较时间是否为 20:00?
您可能需要一个真正的调度程序。
参见石英 https://quartz-scheduler.org
它应该符合您的需要
对于 cron 语法:http://quartz-scheduler.org/api/2.2.0/org/quartz/CronTrigger.html
或者用流利的APIhttp://quartz-scheduler.org/api/2.2.0/org/quartz/TriggerBuilder.html
例如,我有一个任务应该在 8:00-20:00 之间每天每分钟执行一次。
所以我计算 8:00 和我的应用程序启动时间 initialDelay
之间的时间间隔,并使用 Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(command, initialDelay, 1, TimeUnit.MINUTE)
。
问题是,我是否需要第二个计时器来观察任务并在时钟到达20:00时取消它?或者我是否必须在每次执行任务时比较时间是否为 20:00?
您可能需要一个真正的调度程序。
参见石英 https://quartz-scheduler.org
它应该符合您的需要
对于 cron 语法:http://quartz-scheduler.org/api/2.2.0/org/quartz/CronTrigger.html
或者用流利的APIhttp://quartz-scheduler.org/api/2.2.0/org/quartz/TriggerBuilder.html