1. Aufgabe
Job: Es handelt sich um eine Schnittstelle mit nur einer Methode „Void Execution“ (JobExecutionContext-Kontext). Die Klasse JobExecutionContext stellt verschiedene Informationen zum Planungskontext bereit. Job-Laufzeitinformationen werden in der JobDataMap-Instanz gespeichert.
2 Trigger: ist eine Klasse, die die Zeittriggerregeln beschreibt, die die Jobausführung auslösen. Es gibt zwei Hauptunterklassen: SimpleTrigger und CronTrigger. Wenn es nur einmal ausgelöst oder in einem festen Zeitintervall ausgeführt werden muss, ist SimpleTrigger die am besten geeignete Wahl, während CronTrigger über Cron-Ausdrücke Planungspläne für verschiedene komplexe Zeitregeln definieren kann: z. B. die Ausführung um 9:00 Uhr jeden Morgen, Montag, Mittwoch, ausgeführt um 17:00 Uhr am Freitag usw.;
3. Scheduler
JobDetail: Quartz erstellt jedes Mal eine Jobinstanz, wenn es einen Job ausführt, sodass es nicht direkt akzeptiert wird Stattdessen erhält sie eine Job-Implementierungsklasse, sodass der Job zur Laufzeit über den Reflexionsmechanismus von newInstance() instanziiert werden kann. Daher ist eine Klasse erforderlich, um die Job-Implementierungsklasse und andere zugehörige statische Informationen wie Jobname, Beschreibung, zugehöriger Listener und andere Informationen zu beschreiben.
Erstellen Sie einen Quartz-Job
1. Erinnerungsdienstklasse
3 🎜>/** * *计划实体类 */ public class Plan { private String date; private String task; public Plan(String date, String task) { this.date = date; this.task = task; } public Plan() { } @Override public String toString() { return "Plan [date=" + date + ", task=" + task + "]"; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } public String getTask() { return task; } public void setTask(String task) { this.task = task; } }
4. Timer-Aufgaben planen
/** * * @提醒服务类 * */ public class RemindService { //数据查询 public List<Plan> getPlansForToday(){ List<Plan> list=new ArrayList<Plan>(); Plan p1=new Plan("2016-11-3","呵呵"); Plan p2=new Plan("2016-11-4","嘿嘿"); list.add(p1); list.add(p2); return list; } //提醒服务类 public void ouputPlan(){ List<Plan> forToday = getPlansForToday(); for (Plan plan : forToday) { System.out.println("计划时间"+plan.getDate()+"计划内容"+plan.getTask()); } } }
Cron-Ausdruck
/** * * @提醒任务类 * */ public class RemindJob implements Job { private RemindService service=new RemindService(); public void execute(JobExecutionContext arg0) throws JobExecutionException { service.getPlansForToday(); } public RemindService getService() { return service; } public void setService(RemindService service) { this.service = service; } }
public class TestJob { public static void doRemind() throws SchedulerException, InterruptedException{ //创建一个任务 JobDetail job =JobBuilder.newJob(RemindJob.class).withIdentity("job1", "group1").build(); //创建一个触发器 /*Trigger trigger = TriggerBuilder.newTrigger() .withIdentity(TriggerKey.triggerKey("myTrigger", "myTriggerGroup")) .withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInMilliseconds(2)) .startAt(new Date(System.currentTimeMillis()+2000)) .build();*/ Trigger trigger=TriggerBuilder.newTrigger().withIdentity("myTrigger", "group1"). withSchedule(CronScheduleBuilder.cronSchedule("0 34 16 ? * 5#1 2016")).build(); SchedulerFactory s=new StdSchedulerFactory(); Scheduler scheduler = s.getScheduler(); //注册并进行调度 scheduler.scheduleJob(job,trigger); //启动调度 scheduler.start(); //睡眠10s //Thread.sleep(10000); //关闭调度 //scheduler.shutdown(); } public static void main(String[] args) throws SchedulerException, InterruptedException { doRemind(); } }