Quartz call Daquan
1. quartz is widely used and can be executed independently or embedded in spring.
Similar scheduled tasks can be executed using crontab in Linux.
2. Implementation Code:
Quartztest: Main execution class
Package COM. taobao. terminator. allen. quartztest; import Org. apache. commons. logging. log; import Org. apache. commons. logging. logfactory; import Org. quartz. crontrigger; import Org. quartz. jobdetail; import Org. quartz. joblistener; import Org. quartz. scheduler; import Org. quartz. schedulerfactory; import Org. quartz. impl. stdschedulerfactory; public class quartztest {private final static log logger = logfactory. getlog (Quartztest. class); public static void main (string [] ARGs) {system. out. println ("this is test for quartz"); // initialize scheduler factory class schedulerfactory factory = new stdschedulerfactory (); try {// directschedulerfactory to generate an instance, create a shced1_sched1_shced1_= factory. getscheduler (); // Z listener, divided into global and local. Partial return must be performed in the specified jobdetail. joblistener = new quartzlistener ("quartz-test"); shcedener is not required globally. addjoblistener (joblistener); // The shceduler context is similar to the servlet context and has similar functions. context will be passed to the listener shced.pdf. getcontext (). put ("corename", "corename"); // You can also save the key-value and jobdetail of context. getjobdatamap () jobdetail = new jobdetail ("full-detail", "full-detail-group", quartzjob. class); jobdetail. addjob Listener ("quartz-test"); jobdetail. getjobdatamap (). put ("jobdetail-Data", "jobdetail"); // generate the trigger crontrigger trigger = new crontrigger ("full-Trigger", "full-trigger-group"); trigger. setcronexpression ("0/30 ****? "); // Add job shcedtasks. schedulejob (jobdetail, trigger); // start to execute shceduler. start (); While (true) {thread. sleep (1000*10); system. out. println ("trigger scheduled task"); shcedtasks. triggerjob ("full-detail", "full-detail-group"); thread. sleep (1000*40); // terminate the running job shcedtasks. interrupt ("full-detail", "full-detail-group"); system. out. println ("the schedule is over"); // disable the timer shceduler. shutdown (); break;} catch (exception e) {logger. error ("failed to generate the debugger", e );}}}
Quartzlistener: Listener, which can be set at three levels: jobdetail, trigger, and schedener
Mainly performs operations before and after the job is executed. context can communicate with each other and perform exceptions, similar to the Context Function of servlet.
package com.taobao.terminator.allen.QuartzTest;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import org.quartz.JobListener;public class QuartzListener implements JobListener{ private String listenerName = "quartz-listener"; public QuartzListener(String listenerName) { this.listenerName = listenerName; } public String getName() { return this.listenerName; } public void jobToBeExecuted(JobExecutionContext context) { System.out.println("the job listener is start"); } public void jobExecutionVetoed(JobExecutionContext context) { } public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) { System.out.println("the job listener is end"); }}
Quartzjob: Pay attention to the implementation of the interrupt method. It can be used to stop the current job or be deleted directly using shcedule. deletejob (name, groupname ).
import org.quartz.InterruptableJob;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import org.quartz.UnableToInterruptJobException;public class QuartzJob implements InterruptableJob{ private boolean stop = false ; public void execute(JobExecutionContext context) throws JobExecutionException { if(!this.stop) { System.out.println("this is ok"); } } public void interrupt() throws UnableToInterruptJobException { this.stop = true ; System.out.println("it is over"); } public boolean isStop() { return stop; }}
From: http://blog.csdn.net/flyingpig4/article/details/6263560
Quartz call Daquan