‘org.quartz.Scheduler’ class provides ‘getCurrentlyExecutingJobs’
method, it returns list of JobExecutionContext objects, that represent all
currently executing Jobs in this Scheduler instance.
List<JobExecutionContext> jobExecContexts =
scheduler.getCurrentlyExecutingJobs();
System.out.println("********************************************");
System.out.println("Currently Executing Jobs");
for (JobExecutionContext context : jobExecContexts) {
System.out.println(((JobDetailImpl)
context.getJobDetail()).getName());
}
System.out.println("********************************************");
Find the below working application.
HelloJob.java
package com.sample.jobs; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class HelloJob implements Job { public void execute(JobExecutionContext jec) throws JobExecutionException { try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("Hello World........."); } }
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 { try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("Printing......."); } }
QuartzSchedulerEx.java
package com.sample.app; import java.util.Date; import java.util.List; import org.quartz.JobExecutionContext; 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.HelloJob; 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(); // Delay the execution of scheduler for 5 seconds scheduler.start(); JobDetailImpl helloJobDetails = new JobDetailImpl(); helloJobDetails.setName("Hello Job"); helloJobDetails.setGroup("DemoJobGroup"); helloJobDetails.setJobClass(HelloJob.class); JobDetailImpl printJobDetails = new JobDetailImpl(); printJobDetails.setName("Print Job"); printJobDetails.setGroup("DemoJobGroup"); printJobDetails.setJobClass(PrintJob.class); // Creating schedule time with trigger SimpleTriggerImpl trigger1 = new SimpleTriggerImpl(); trigger1.setStartTime(new Date(System.currentTimeMillis() + 500)); trigger1.setRepeatCount(-1); // Run indefinite times trigger1.setRepeatInterval(2000); trigger1.setName("First Trigger"); trigger1.setPriority(10); // Setting trigger 1 priority to 10 // Creating schedule time with trigger SimpleTriggerImpl trigger2 = new SimpleTriggerImpl(); trigger2.setStartTime(new Date(System.currentTimeMillis() + 500)); trigger2.setRepeatCount(-1); // Run indefinite times trigger2.setRepeatInterval(2000); trigger2.setName("Second Trigger"); trigger2.setPriority(10); // Setting trigger 1 priority to 10 scheduler.scheduleJob(helloJobDetails, trigger1); scheduler.scheduleJob(printJobDetails, trigger2); /* Thread prints currently executing jobs */ Thread t1 = new Thread() { public void run() { while (true) { try { Thread.sleep(1000); List<JobExecutionContext> jobExecContexts = scheduler.getCurrentlyExecutingJobs(); System.out.println("********************************************"); System.out.println("Currently Executing Jobs"); for (JobExecutionContext context : jobExecContexts) { System.out.println(((JobDetailImpl) context.getJobDetail()).getName()); } System.out.println("********************************************"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }; t1.start(); } }
Run QuartzSchedulerEx.java, you can see below messages in
the console.
********************************************
Currently Executing Jobs
Hello Job
Print Job
********************************************
********************************************
Currently Executing Jobs
Hello Job
Print Job
********************************************
Hello World.........
Printing.......
********************************************
.........
.........
No comments:
Post a Comment