Heim > 类库下载 > java类库 > Hauptteil

Das Quartz-Framework implementiert die Aufgabenplanung

高洛峰
Freigeben: 2016-11-05 13:51:12
Original
2206 Leute haben es durchsucht

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;
    }
}
Nach dem Login kopieren

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());
        }
    }
}
Nach dem Login kopieren

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;
    }
}
Nach dem Login kopieren

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();
        }
}
Nach dem Login kopieren

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage