I want to make my code run on two time basis. This is not how it works:

public static void main(String[] args) throws IOException, SchedulerException { JobDetail job = JobBuilder .newJob(QuartzJob.class) .withIdentity("QuartzJob", "group1") .build(); Trigger trigger1 = TriggerBuilder .newTrigger() .withIdentity("trigger1", "group1") .withSchedule(CronScheduleBuilder .cronSchedule("0 13 7 ? * MON,TUE,WED,THU,FRI") .cronSchedule("0 14 17 ? * MON,TUE,WED,THU")) .build(); SchedulerFactory schedFact = new StdSchedulerFactory(); Scheduler sched = schedFact.getScheduler(); sched.start(); sched.scheduleJob(job, trigger1); } 

How to do right?

    1 answer 1

    You can put several triggers on one task, as shown in the example below. In this case, the task itself must be stored in the scheduler, even if it is not associated with any trigger, the storeDurably method is responsible for storeDurably . The link between the trigger and the task is specified in the trigger using the forJob method.

     JobDetail job = JobBuilder .newJob(QuartzJob.class) .withIdentity("QuartzJob", "group1") .storeDurably() .build(); Trigger trigger1 = TriggerBuilder .newTrigger() .withIdentity("trigger1", "group1") .withSchedule(CronScheduleBuilder .cronSchedule("0 13 7 ? * MON,TUE,WED,THU,FRI")) .forJob(job) .build(); Trigger trigger2 = TriggerBuilder .newTrigger() .withIdentity("trigger2", "group1") .withSchedule(CronScheduleBuilder .cronSchedule("0 14 17 ? * MON,TUE,WED,THU")) .forJob(job) .build(); SchedulerFactory schedFact = new StdSchedulerFactory(); Scheduler sched = schedFact.getScheduler(); sched.start(); sched.addJob(job, true); sched.scheduleJob(trigger1); sched.scheduleJob(trigger2);