Quartz 分布式定时任务

Quartz 提供了一种基于数据库的分布式任务解决方案。

Quartz 源码下载地址

所需jar包

详细的配置可以参考官方网站:http://www.quartz-scheduler.org/documentation/quartz-2.2.x/configuration/

quartz 常用接口

接口名称说明
Job执行任务调度的组件要实现的接口
JobDetail用来定义Job的实例
JobBuilder用来定义或创建JobDetail的实例
Tigger定义一个Job何时被执行的组件,也称触发器
TriggerBuilder用来创建Tigger的实例
Scheduler跟任务调度相关的接口

 

quartz主要有三个概念

(1)任务调度器Scheduler 

SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();

Scheduler schedule = StdSchedulerFactory.getDefaultScheduler();

(2)任务触发器Trigger

Trigger tri = TriggerBuilder.newTrigger().build;

(3)任务Job

JobBuilder.newJob(MyJob.class).build();
Cron表达式:
格式:秒 分 时 日 月  星期几 年(可选)

位置字段定义范围允许的特殊字符
10~59,_*/
2分钟0~59,_*/
3小时0~23,_*/
4月份中的哪一天1~31,_*?/LWC
5月份1~12或JAN~DEC,_*/
6星期几1~7或SUN~SAT,_*?/LC#
7年份1970~2099,_*/


1:?只能用在日或星期几的域上
2:分隔符[",","-","/","*"];eg:在分钟域使用12/15(从12分开始每隔15分钟触发)
3: 星期(1-7)
4:日跟星期的域不能是互斥的,不能同时使用
5:完整的例子:0 15,25,35 9-17 ? * 6 2017-2018 = 2017年和2018年的6月份每天9点到17点分钟刻度为15或25或35时触发

demo

public class JobDemo1 implements Job{
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
       JobKey jobKey = context.getJobDetail().getKey();  
        System.out.println("任务id>>>>>>>>>>>>>>>"+jobKey);
        for(int i=0;i<5;i++) {
                System.out.println("i am a superman");
        }
    }
}

public static void main(String[] args) throws SchedulerException, ParseException {

    try {
            Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
            JobDetail jobdetail = JobBuilder.newJob(JobDemo1.class).withIdentity("任务名字")

                  //传值
                .usingJobData("name", "张三").build();
            Trigger trigger = TriggerBuilder.newTrigger() 
                    .withIdentity("触发器名字")
                    .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                    .withIntervalInSeconds(5).withRepeatCount(3))
                    .build();
            scheduler.scheduleJob(jobdetail, trigger);
            scheduler.start();
        } catch (SchedulerException se) {
            se.printStackTrace();
        }

}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值