как отменить запланированное на время задание cron в Java?

#java

#java

Вопрос:

   public class CronTriggerApp {
        public static void main(String[] args) {

            try {

                SchedulerFactory sf = new StdSchedulerFactory();
                Scheduler scheduler = sf.getScheduler();

                JobDetail job = JobBuilder.newJob(Main.class)
                        .withIdentity("dummyJobName", "group1").build();
     System.out.println(job);
                Date startTime = DateBuilder.nextGivenSecondDate(null, 5);
     System.out.println(startTime);
                // run every 20 seconds infinite loop
                CronTrigger crontrigger = TriggerBuilder
                        .newTrigger()
                        .withIdentity("TwentySec", "group1")
                        .startAt(startTime)
                        .startNow()
                        .withSchedule(CronScheduleBuilder.cronSchedule("* * * ? * *"))//0 53 12 * * ? *
                        .build();

                scheduler.start();
                scheduler.scheduleJob(job, crontrigger);

                 //scheduler.shutdown();

            } catch (SchedulerException se) {
                se.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }

public class Main implements Job {
    public void execute(JobExecutionContext context) throws JobExecutionException 
    {

        System.out.println("Trigger Starts.." new Date());
        System.out.println("ALL_OFF");

    }
}
  

Используя приведенный выше код, я могу запланировать задание cron .. но если я хочу отменить запланированное время, как я могу отменить или остановить запланированную задачу?
может ли кто-нибудь, пожалуйста, помочь мне, как я могу остановить или отменить запланированную задачу?

Ответ №1:

Вы можете предоставить конечную точку для его прерывания. И используйте следующую функцию планировщика, чтобы остановить его. планировщик.прерывание(JobDetail.getKey());

Комментарии:

1. Спасибо, Пиюш. Но где я хочу написать эту функцию scheduler.interrupt(JobDetail.getKey());

2. В каком классе я хочу записать данную вами функцию?

3. Это вам нужно решить. Если вы запускаете задание на сервере (который прослушивает какой-либо порт), вы можете предоставить конечную точку для его прерывания. (Rest api, который вызовет эту функцию.). Если это всего лишь простая Java-программа, вам нужно решить, когда вы хотите прервать. это (при ошибке, исключении и т.д…..).