Quartz 任务调度器基础demo

1.添加maven

    <dependency>
      <groupId>org.quartz-scheduler</groupId>
      <artifactId>quartz</artifactId>
      <version>1.8.6</version>
    </dependency>

2.创建实现类

package cn.quartz;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
//引入接口创建实现方法
public class MyJob implements Job {
    @Override

    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        System.out.println("执行的工作");
    }
}

CronTrigger 是Trigger的子类

SimpleTrigger 固定时间间隔的调度任务(如每2小时执行1次)
CronTrigger 指定时间点的调度任务(如每天1点执行1次)

Cron表达式由6-7个空格+分隔符组成的时间元素(第7个可选)
一定要保持6个元素

在这里插入图片描述
测试类

package cn.quartz;

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

import java.text.ParseException;
import java.util.Date;

public class Test {
    
    public static void main(String[] args) throws SchedulerException, InterruptedException, ParseException {
        //创建任务实例                            名称     组别A    反射实现class
        JobDetail jobDetail=new JobDetail( "job1","A",MyJob.class);
        //创建触发器 trigger                                   名称            运行方式                    运行时间
        SimpleTrigger simTrig = new SimpleTrigger("mytigger",SimpleTrigger.REPEAT_INDEFINITELY,3000);
        //                                                名称        分组       表达式   秒 分 点
        CronTrigger cronTrigger=new CronTrigger("Ctigger","B","0 22 13 ? * *");

        //设置开始时间                    系统当前时间+1秒=运行后1秒执行
        simTrig.setStartTime(new Date(System.currentTimeMillis()+1000));
        //创建SchedulerFactory调度器工厂实例
        SchedulerFactory  factory=new StdSchedulerFactory();
        //获取调度器
        Scheduler  scheduler=factory.getScheduler();
        //粘合任务和调度器
        scheduler.scheduleJob(jobDetail,cronTrigger);
        //
        scheduler.start();
        //线程休眠5秒后再往下执行
        Thread.sleep(50000);
        //停止任务
        scheduler.shutdown();
    }
}


在这里插入图片描述

Spring中的使用
applicationContext 中添加task DTD

@Scheduled(cron= “0 22 13 ? * *”);
public void test(){}

使用Job创建定时任务

public class QzDemo {
    public static void main(String[] args) throws Exception{
        //创建工作
        JobDetail jobDetail = JobBuilder.newJob(MyJob.class)
                .withDescription("工作的描述")
                .withIdentity("工作的名称", "工作的组")
                .build();

        //表达式调度构建器
        CronScheduleBuilder cronScheduleBuilder= CronScheduleBuilder.cronSchedule("0/5 * * ? * *");

        //创建触发器
        Trigger trigger = TriggerBuilder.newTrigger()
                .withDescription("触发器的描述")
                .withIdentity("触发器的名称", "触发器的组")
                .withSchedule(cronScheduleBuilder) //"0/5 11 * ? * *"表达式
                .startAt(new Date())//不设置,默认为当前时间
                .build();

        System.out.println(trigger.getJobKey());//当trigger触发时被执行的job的身份;

        //创建调度器,粘合工作和触发器
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();
        scheduler.scheduleJob(jobDetail, trigger);
        //启动调度器
        scheduler.start();
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值