quartz API 学习demo

api调用demo1

package cn.xiniu.quartz;

import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;

/**
 * @ClassName: Demo1
 * @Description 请描述下该类是做什么的
 * @Author feizhou
 * @Date 2020/6/7 0007  下午 12:35
 * @Verson 1.0
 **/
public class Demo1 {

        public static void main(String[] args) {
            try {
                // 获取scheduler实例对象
                Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

                // 开始
                scheduler.start();
                // 结束
                scheduler.shutdown();

            } catch (SchedulerException se) {
                se.printStackTrace();
            }
    }
}

api调用demo2

/**
 * @ClassName: Demo1
 * @Description 请描述下该类是做什么的
 * @Author feizhou
 * @Date 2020/6/7 0007  下午 12:35
 * @Verson 1.0
 **/
public class Demo2 {
    //scheduler实例化后,可以启动(start)、暂停(stand-by)、停止(shutdown)。
    //注意:
        //scheduler被停止后,除非重新实例化,否则不能重新启动;
        //只有当scheduler启动后,trigger才会被触发(job才会被执行)。//处于暂停状态不会被触发
        public static void main(String[] args) throws SchedulerException {

            //获取工厂
            SchedulerFactory schedFact = new StdSchedulerFactory();
            //获取Scheduler实例
            Scheduler sched = schedFact.getScheduler();

            //开始
            sched.start();

            // 定义job
            JobDetail job1 = newJob(HelloJob.class)
                    .withIdentity("myJob", "group1")
                    .build();

            // 定义触发器
            Trigger job1Trigger = newTrigger()
                    .withIdentity("myTrigger", "group1")
                    .startNow()
                    .withSchedule(simpleSchedule()
                            //间隔时间
                            .withIntervalInSeconds(1)
                            .repeatForever())
                    .build();

            //执行job,使用的trigger触发器
            sched.scheduleJob(job1, job1Trigger);
    }
}


---------------
/**
 * @ClassName: HelloJob
 * @Description 请描述下该类是做什么的
 * @Author feizhou
 * @Date 2020/6/7 0007  下午 12:56
 * @Verson 1.0
 **/
public class HelloJob implements Job {
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        System.out.println("时间:"+new Date().getSeconds() +"--->HelloJob");
    }
}

-----------

输出:
时间:50--->HelloJob
时间:51--->HelloJob
时间:52--->HelloJob
时间:53--->HelloJob
时间:54--->HelloJob
时间:55--->HelloJob

 

JobDataMap:job实例增加属性或配置

package cn.xiniu.quartz;


import cn.xiniu.quartz.jobs.HelloJob;
import cn.xiniu.quartz.jobs.HelloJob2;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;

/**
 * @ClassName: Demo1
 * @Description 请描述下该类是做什么的
 * @Author feizhou
 * @Date 2020/6/7 0007  下午 12:35
 * @Verson 1.0
 **/
public class Demo3 {
    //scheduler实例化后,可以启动(start)、暂停(stand-by)、停止(shutdown)。
    //注意:
        //scheduler被停止后,除非重新实例化,否则不能重新启动;
        //只有当scheduler启动后,trigger才会被触发(job才会被执行)。//处于暂停状态不会被触发
        public static void main(String[] args) throws SchedulerException {

            //获取工厂
            SchedulerFactory schedFact = new StdSchedulerFactory();
            //获取Scheduler实例
            Scheduler sched = schedFact.getScheduler();

            //开始
            sched.start();

            // 定义job
            JobDetail job1 = newJob(HelloJob2.class)
                    .withIdentity("myJob", "group1")
                    //JobDataMap:job实例增加属性或配置
                    .usingJobData("key1", "你好")
                    .usingJobData("key2", "我好")
                    .build();

            // 定义触发器
            Trigger job1Trigger = newTrigger()
                    .withIdentity("myTrigger", "group1")
                    .startNow()
                    .withSchedule(simpleSchedule()
                            //间隔时间
                            .withIntervalInSeconds(1)
                            .repeatForever())
                    .build();

            //执行job,使用的trigger触发器
            sched.scheduleJob(job1, job1Trigger);
    }
}


-------------

package cn.xiniu.quartz.jobs;

import org.quartz.*;

import java.util.Date;

/**
 * @ClassName: HelloJob
 * @Description 请描述下该类是做什么的
 * @Author feizhou
 * @Date 2020/6/7 0007  下午 12:56
 * @Verson 1.0
 **/
public class HelloJob2 implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        JobKey key = context.getJobDetail().getKey();

        JobDataMap dataMap = context.getJobDetail().getJobDataMap();

        String v1 = dataMap.getString("key1");
        String v2 = dataMap.getString("key2");

        System.err.println("key--> " + key );
        System.err.println("key1--> " + v1 );
        System.err.println("key2--> " + v2 );
        System.out.println("时间:"+new Date().getSeconds() +"--->HelloJob");
    }
}

-------------
输出
 
 
key--> group1.myJob
key1--> 你好
key2--> 我好
时间:12--->HelloJob
key--> group1.myJob
key1--> 你好
key2--> 我好
时间:13--->HelloJob
key--> group1.myJob
key1--> 你好
key2--> 我好
时间:14--->HelloJob
key--> group1.myJob
key1--> 你好
key2--> 我好

Process finished with exit code -1

 

 

Simple Trigger

package cn.xiniu.quartz;


import cn.xiniu.quartz.jobs.HelloJob2;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

import java.util.Date;

import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;

/**
 * @ClassName: Demo1
 * @Description 请描述下该类是做什么的
 * @Author feizhou
 * @Date 2020/6/7 0007  下午 12:35
 * @Verson 1.0
 **/
public class Demo4 {
    //scheduler实例化后,可以启动(start)、暂停(stand-by)、停止(shutdown)。
    //注意:
        //scheduler被停止后,除非重新实例化,否则不能重新启动;
        //只有当scheduler启动后,trigger才会被触发(job才会被执行)。//处于暂停状态不会被触发
        public static void main(String[] args) throws SchedulerException {

            //获取工厂
            SchedulerFactory schedFact = new StdSchedulerFactory();
            //获取Scheduler实例
            Scheduler sched = schedFact.getScheduler();

            //开始
            sched.start();

            // 定义job
            JobDetail job1 = newJob(HelloJob2.class)
                    .withIdentity("myJob", "group1")
                    //JobDataMap:job实例增加属性或配置
                    .usingJobData("key1", "你好")
                    .usingJobData("key2", "我好")
                    .build();



            // 定义触发器
            Trigger job1Trigger = newTrigger()
                    .withIdentity("myTrigger", "group1")
                    //15秒后执行
                    .startAt(DateBuilder.futureDate(15, DateBuilder.IntervalUnit.SECOND))
                    //开始20秒后结束
                    .endAt(DateBuilder.futureDate(25, DateBuilder.IntervalUnit.SECOND))
                    .withSchedule(simpleSchedule()
                            //间隔1秒
                            .withIntervalInSeconds(1)
                            //重复无穷次数
                            //.repeatForever()
                            //重复10次
                            .withRepeatCount(10))

                    .build();

            //执行job,使用的trigger触发器
            sched.scheduleJob(job1, job1Trigger);
    }
}

 

CronTrigger 

package cn.xiniu.quartz;


import cn.xiniu.quartz.jobs.HelloJob2;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;

/**
 * @ClassName: Demo1
 * @Description 请描述下该类是做什么的
 * @Author feizhou
 * @Date 2020/6/7 0007  下午 12:35
 * @Verson 1.0
 **/
public class Demo5 {
    //scheduler实例化后,可以启动(start)、暂停(stand-by)、停止(shutdown)。
    //注意:
        //scheduler被停止后,除非重新实例化,否则不能重新启动;
        //只有当scheduler启动后,trigger才会被触发(job才会被执行)。//处于暂停状态不会被触发
        public static void main(String[] args) throws SchedulerException {

            //获取工厂
            SchedulerFactory schedFact = new StdSchedulerFactory();
            //获取Scheduler实例
            Scheduler sched = schedFact.getScheduler();

            //开始
            sched.start();

            // 定义job
            JobDetail job1 = newJob(HelloJob2.class)
                    .withIdentity("myJob", "group1")
                    //JobDataMap:job实例增加属性或配置
                    .usingJobData("key1", "你好")
                    .usingJobData("key2", "我好")
                    .build();



            // 定义触发器
            Trigger job1Trigger = newTrigger()
                    .withIdentity("myTrigger", "group1")
                    .withSchedule(cronSchedule("0/2 59 15 * * ?"))
                    .build();

            //执行job,使用的trigger触发器
            sched.scheduleJob(job1, job1Trigger);
    }
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值