zoukankan      html  css  js  c++  java
  • Quartz——定时任务

    Quartz之前版本的使用:http://blog.csdn.net/huihuimimi17/article/details/8215779

    2之后的版本使用:简单使用

    package com.bxw;
    
    import java.util.Date;
    
    import org.quartz.DateBuilder;
    import org.quartz.JobBuilder;
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.SchedulerFactory;
    import org.quartz.SimpleScheduleBuilder;
    import org.quartz.Trigger;
    import org.quartz.TriggerBuilder;
    import org.quartz.impl.StdSchedulerFactory;
    
    public class Demo1Test {
        public void run() throws SchedulerException{
            System.out.println("---初始化ing---");
             //通过SchedulerFactory工厂类获取Scheduler  
            SchedulerFactory sf = new StdSchedulerFactory();
            
            System.out.println("---初始化完成---");
            
            //任务执行时间
    //      Date runTime = DateBuilder.evenMinuteDate(new Date());  
            Date runTime = DateBuilder.evenSecondDateAfterNow(); 
            
            System.out.println("---将job加入Scheduler中---");
            //用于描叙Job实现类及其他的一些静态信息,构建一个作业实例  
            JobDetail jd = JobBuilder.newJob(Demo1.class).withIdentity("testDemo1","group1").build();
            
            //描叙触发Job执行的时间触发规则,Trigger实例化一个触发器  
            Trigger trigger = TriggerBuilder.newTrigger()//创建一个新的TriggerBuilder来规范一个触发器 
                            .withIdentity("trigger1","group1")//给触发器起一个名字和组名
                            //.startNow()//立即执行
                            .startAt(runTime)//设置触发时间
                            .withSchedule(
                                        SimpleScheduleBuilder.simpleSchedule()
                                        .withIntervalInSeconds(2)//时间间隔
                                        //.withRepeatCount(5)//重复次数,将执行6次
                                    ).build();//产生触发器
              //运行容器,使用SchedulerFactory创建Scheduler实例  
            Scheduler sched = sf.getScheduler();
            
            //向scheduler添加一个job和trigger
            sched.scheduleJob(jd,trigger);
            System.out.println(jd.getKey()+"运行在:"+runTime);
            sched.start();
        }
        
        public static void main(String[] args) throws SchedulerException {
            Demo1Test dt = new Demo1Test();
            dt.run();
        }
    }

    步骤:1.得到一个Sceduler    2.新建一个作业    3.新建一个触发器    4.想Scheduler添加作业和触发器    5.sceduler.start()

    工具类:

    package com.bxw;
    
    import org.quartz.Job;
    import org.quartz.JobBuilder;
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.SchedulerFactory;
    import org.quartz.SimpleScheduleBuilder;
    import org.quartz.Trigger;
    import org.quartz.TriggerBuilder;
    import org.quartz.impl.StdSchedulerFactory;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    /**
     * 任务调度公共类
     * @remark
     * @author feizi
     * @time 2015-3-23下午3:04:12
     */
    public class QuartzUtil {
    
        private final static String JOB_GROUP_NAME = "QUARTZ_JOBGROUP_NAME";//任务组
        private final static String TRIGGER_GROUP_NAME = "QUARTZ_TRIGGERGROUP_NAME";//触发器组
        private static Logger log = LoggerFactory.getLogger(QuartzUtil.class);//日志
    
        /**
         * 添加任务的方法
         * @param jobName  任务名
         * @param triggerName  触发器名
         * @param jobClass  执行任务的类
         * @param seconds  间隔时间
         * @throws SchedulerException
         */
        public static void addJob(String jobName,String triggerName,Class<? extends Job> jobClass,int seconds) throws SchedulerException{
            log.info("==================initialization=================");
    
            //创建一个SchedulerFactory工厂实例
            SchedulerFactory sf = new StdSchedulerFactory();
    
            //通过SchedulerFactory构建Scheduler对象 
            Scheduler sche = sf.getScheduler();
    
            log.info("===================initialize finshed===================");
    
            log.info("==============add the Job to Scheduler==================");  
    
            //用于描叙Job实现类及其他的一些静态信息,构建一个作业实例
            JobDetail jobDetail = JobBuilder.newJob(jobClass)
                                    .withIdentity(jobName, JOB_GROUP_NAME)
                                    .build();
    
            //构建一个触发器,规定触发的规则
            Trigger trigger = TriggerBuilder.newTrigger()//创建一个新的TriggerBuilder来规范一个触发器
                                .withIdentity(triggerName, TRIGGER_GROUP_NAME)//给触发器起一个名字和组名
                                .startNow()//立即执行
                                .withSchedule(
                                    SimpleScheduleBuilder.simpleSchedule()
                                    .withIntervalInSeconds(seconds)//时间间隔  单位:秒
                                    .repeatForever()//一直执行
                                )
                                .build();//产生触发器
    
            //向Scheduler中添加job任务和trigger触发器
            sche.scheduleJob(jobDetail, trigger);
    
            //启动
            sche.start();
        }
    
        /**
         * 测试
         * @param args
         * @throws SchedulerException 
         */
        public static void main(String[] args) throws SchedulerException {
            QuartzUtil.addJob("任务一", "触发器一", Demo1.class, 2);
            QuartzUtil.addJob("任务二", "触发器二", Demo2.class, 4);
        }
    }
  • 相关阅读:
    大厂面试系列(七):数据结构与算法等
    大厂面试系列(六):Redis和缓存等
    大厂面试系列(五):Dubbo和Spring Cloud
    大厂面试系列(四):Spring相关
    大厂面试系列(二):并发编程
    大厂面试系列(二)::NIO和Netty
    大厂面试系列(一)::JVM基础
    Plugin 'org.apache.tomcat.maven:tomcat7-maven-plugin:' not found
    Spring源码在编译过程中的几个问题
    vue.js Interpolation inside attributes has been removed.
  • 原文地址:https://www.cnblogs.com/popcornya/p/7355182.html
Copyright © 2011-2022 走看看