‘org.quartz.Trigger’ interface provides mayFireAgain
method, it returns true, if there is a chance for this trigger to fire again.
org.quartz.impl.triggers.SimpleTriggerImpl class
implemented this method like below.
public boolean
mayFireAgain() {
return
(getNextFireTime() != null);
}
As you see the above method definition, it checks next
firing time of the trigger, if there is no next firing time, trigger will not
fire again.
PrintJob.java
package com.sample.jobs; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class PrintJob implements Job { public void execute(JobExecutionContext jec) throws JobExecutionException { System.out.println("Printing....."); System.out.println("Is trigger fire again : " + jec.getTrigger().mayFireAgain()); } }
QuartzSchedulerEx.java
package com.sample.app; import java.util.Date; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.impl.JobDetailImpl; import org.quartz.impl.StdSchedulerFactory; import org.quartz.impl.triggers.SimpleTriggerImpl; import com.sample.jobs.PrintJob; public class QuartzSchedulerEx { public static void main(String args[]) throws SchedulerException, InterruptedException { // Initiate a Schedule Factory SchedulerFactory schedulerFactory = new StdSchedulerFactory(); // Retrieve a scheduler from schedule factory Scheduler scheduler = schedulerFactory.getScheduler(); // Creating JobDetailImpl and link to our Job class JobDetailImpl printJobDetails = new JobDetailImpl(); printJobDetails.setJobClass(PrintJob.class); printJobDetails.setName("PrintJob"); printJobDetails.setGroup("PrintMessages"); // Creating schedule time with trigger SimpleTriggerImpl trigger1 = new SimpleTriggerImpl(); trigger1.setStartTime(new Date(System.currentTimeMillis() + 500)); trigger1.setRepeatCount(2); trigger1.setRepeatInterval(3000); trigger1.setName("First Trigger"); trigger1.setDescription("Job executes every 1 second"); // Start scheduler scheduler.start(); // Schedule the jobs using triggers scheduler.scheduleJob(printJobDetails, trigger1); } }
Output
Printing.....
Is trigger fire again : true
Printing.....
Is trigger fire again : true
Printing.....
Is trigger fire again : false
No comments:
Post a Comment