Quartz框架使用(任务调度)

目录

实现简单的触发demo

simpleTrigger版

CronTrigger版

spring的任务调度


触发分为 simpleTrigger和cronTrigger

实现简单的触发demo

simpleTrigger版

新建项目并导入jar包



    org.quartz-scheduler
    quartz
    1.8.6

新建任务类

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

//任务类要实现job接口以及重写execute方法
public class jobDemo implements Job {
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        System.out.println("这是任务类要做的任务");
    }
}

新建触发类(这里任务调度类也写在一起了)

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

import java.util.Date;

//触发类,触发方法
public class traggerDemo {
    public static void main(String[] args) {
        //要构造实例化  第一个是工作名称 第二个是任务组   第三个是任务类
        JobDetail jobDetail=new JobDetail("工作名称","A",jobDemo.class);
        //创建触发器   第一个参数是触发器的名称(myTrigger)   第二个参数是执行触发的间隔(无限触发)   第三个参数是间隔的时长(3秒)
        SimpleTrigger simpleTrigger=new SimpleTrigger("myTrigger",SimpleTrigger.REPEAT_INDEFINITELY,3000);
        //创建完触发器要设置触发器的开始时间  现在开始
        simpleTrigger.setStartTime(new Date());

        //开始实例化调度类的调度工厂
        SchedulerFactory schedulerFactory=new StdSchedulerFactory();
        try {
            //获得调度核心
            Scheduler scheduler=schedulerFactory.getScheduler();
            //开始整合任务类和触发类 第一个参数是任务类    第二个参数是触发类
            scheduler.scheduleJob(jobDetail,simpleTrigger);
            //执行整合并开始任务
            scheduler.start();
            //休眠15秒后关闭
            Thread.sleep(15000);
            scheduler.shutdown();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}


CronTrigger版

这是任务类

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

//还是实现并重写
public class jobDemo implements Job {
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        System.out.println("这是表达式触发的例子");
    }
}

新建触发类(这里任务调度类也写在一起了)

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

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

public class triggerDemo {
    public static void main(String[] args) {
        //这是任务类,分组到B组,名字是ctg
        JobDetail jobDetail=new JobDetail("ctg","B",jobDemo.class);

        try {
            //设置每年每月每日的14:17:00秒触发,这是cron表达式
            CronTrigger cronTrigger=new CronTrigger("mytrigger2","B","0 17 14 ? * * ");
            //立刻开启
            cronTrigger.setStartTime(new Date());

            SchedulerFactory schedulerFactory=new StdSchedulerFactory();
            Scheduler scheduler=schedulerFactory.getScheduler();
            scheduler.scheduleJob(jobDetail,cronTrigger);
            scheduler.start();
            Thread.sleep(30000);
            scheduler.shutdown();
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (SchedulerException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

这是cron表达式的详解
这是在线生成cron表达式的网址

spring的任务调度

整体demo结构图
Quartz框架使用(任务调度)_第1张图片
还是要带入jar包


        UTF-8
        1.7
        1.7
        
        4.2.5.RELEASE
    

    
        
            junit
            junit
            4.11
            test
        

        
            org.quartz-scheduler
            quartz
            1.8.6
        

        
        
            org.springframework
            spring-core
            ${spring.version}
        

        
            org.springframework
            spring-web
            ${spring.version}
        

        
            org.springframework
            spring-oxm
            ${spring.version}
        

        
            org.springframework
            spring-tx
            ${spring.version}
        

        
            org.springframework
            spring-jdbc
            ${spring.version}
        

        
            org.springframework
            spring-webmvc
            ${spring.version}
        

        
            org.springframework
            spring-context
            ${spring.version}
        

        
            org.springframework
            spring-context-support
            ${spring.version}
        

        
            org.springframework
            spring-aop
            ${spring.version}
        

        
            org.springframework
            spring-test
            ${spring.version}
        

applicationContext.xml




    
    
    
    
    


任务触发调度类

package com.bdqn.text;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
//定义一个bean名叫ssaa方便后续调用
@Component("ssaa")
public class SpringCronDemo1 {

    @Scheduled(cron = " * * * ? * * ")
    public void show(){
        System.out.println("这是Spring的Quartz整合测试");
    }
}

测试方法

package com.bdqn.text;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Text {
    public static void main(String[] args) {
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
        applicationContext.getBean("ssaa",SpringCronDemo1.class).show();
    }
}

 

你可能感兴趣的:(学习)