Quartz(二)简单的使用

来源:互联网 发布:网络打字员招聘 编辑:程序博客网 时间:2024/05/21 17:23

1.定义Job

package cn.itcast.quartz.example;import java.util.Date;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;/** * 要执行的JOB任务 *  * @author xiajie * @version $Id: HelloJob.java, v 0.1 2017年9月29日 上午11:09:42 xiajie Exp $ */public class HelloJob implements Job {    private static Logger _log = LoggerFactory.getLogger(HelloJob.class);    public HelloJob() {    }        public void execute(JobExecutionContext context)        throws JobExecutionException {        System.out.println("Hello World! - " + new Date());        // Say Hello to the World and display the date/time        _log.info("Hello World! - " + new Date());    }}

2.表达式触发器使用

package cn.itcast.quartz.example;import static org.quartz.CronScheduleBuilder.cronSchedule;import static org.quartz.JobBuilder.newJob;import static org.quartz.TriggerBuilder.newTrigger;import org.quartz.JobDetail;import org.quartz.Scheduler;import org.quartz.SchedulerFactory;import org.quartz.Trigger;import org.quartz.impl.StdSchedulerFactory;public class SimpleCronExample {    public void run() throws Exception {        // 定义调度器        SchedulerFactory sf = new StdSchedulerFactory();        Scheduler sched = sf.getScheduler();                // 定义job        JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build();                // 定义触发器,每5秒执行一次        /**         * withSchedule(cronSchedule("0/5 * * * * ?")) 定义触发器         */        Trigger trigger = newTrigger().withIdentity("trigger1", "group1")                .withSchedule(cronSchedule("0/5 * * * * ?")).build();        // 将job注册到调度器        sched.scheduleJob(job, trigger);        // 启动调度器        sched.start();        try {            Thread.sleep(60L * 1000L);        } catch (Exception e) {        }        // 关闭调度器        sched.shutdown(true);    }    public static void main(String[] args) throws Exception {        SimpleCronExample example = new SimpleCronExample();        example.run();    }}


3.简单触发器的使用

package cn.itcast.quartz.example;import static org.quartz.DateBuilder.evenMinuteDate;import static org.quartz.JobBuilder.newJob;import static org.quartz.TriggerBuilder.newTrigger;import org.quartz.JobDetail;import org.quartz.Scheduler;import org.quartz.SchedulerFactory;import org.quartz.Trigger;import org.quartz.impl.StdSchedulerFactory;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.util.Date;public class SimpleExample {    public void run() throws Exception {        Logger log = LoggerFactory.getLogger(SimpleExample.class);        // 定义调度器        /**         * 工厂模式,获取调度器         */        SchedulerFactory sf = new StdSchedulerFactory();        Scheduler sched = sf.getScheduler();        // 获取当前时间的下一分钟        Date runTime = evenMinuteDate(new Date());        // 定义job        // 在quartz中,有组的概念,组+job名称 唯一的        /**         * Job和JobDetail是成对出现的         */        JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build();        // 定义触发器,在下一分钟启动        /**         * withIdentity("trigger1", "group1")         * 触发器的名称,触发器属于哪个组         * startAt 什么时候开始执行         */        Trigger trigger = newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build();        // 将job注册到调度器        sched.scheduleJob(job, trigger);        log.info(job.getKey() + " will run at: " + runTime);        // 启动调度器        sched.start();        // 等待65秒        try {            // wait 65 seconds to show job            Thread.sleep(65L * 1000L);            // executing...        } catch (Exception e) {            //        }        // 关闭调度器        sched.shutdown(true);    }    public static void main(String[] args) throws Exception {        SimpleExample example = new SimpleExample();        example.run();    }}