• Quartz管理类


    package com.sihuatech.project.task.manager;
     
    import java.text.ParseException;
     
    import org.quartz.CronTrigger;
    import org.quartz.Job;
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.SchedulerFactory;
    import org.quartz.Trigger;
    import org.quartz.impl.StdSchedulerFactory;
     
    /**
     * @Title:Quartz管理类
     * 
     * @Description:
     * 
     * @Copyright:
     * @author lei 2008-10-8 14:19:01
     * @version 1.00.000
     * 
     */
    public class QuartzManager {
        private static SchedulerFactory sf = new StdSchedulerFactory();
        private static String JOB_GROUP_NAME = "group1";
        private static String TRIGGER_GROUP_NAME = "trigger1";
     
        private static QuartzManager quartzManager;
     
        public static QuartzManager getInstance() {
            if (quartzManager == null) {
                quartzManager = new QuartzManager();
            }
            return quartzManager;
        }
     
        private QuartzManager() {
     
        }
     
        /**
         * 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名
         * 
         * @param jobName
         *            任务名
         * @param job
         *            任务
         * @param time
         *            时间设置,参考quartz说明文档
         * @throws SchedulerException
         * @throws ParseException
         */
        public static void addJob(String jobName, Job job, String time) throws SchedulerException, ParseException {
            Scheduler sched = sf.getScheduler();
            JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, job.getClass());// 任务名,任务组,任务执行类
            // 触发器
            CronTrigger trigger = new CronTrigger(jobName, TRIGGER_GROUP_NAME);// 触发器名,触发器组
            trigger.setCronExpression(time);// 触发器时间设定
            sched.scheduleJob(jobDetail, trigger);
            // 启动
            if (!sched.isShutdown())
                sched.start();
        }
     
        /**
         * 添加一个定时任务
         * 
         * @param jobName
         *            任务名
         * @param jobGroupName
         *            任务组名
         * @param triggerName
         *            触发器名
         * @param triggerGroupName
         *            触发器组名
         * @param job
         *            任务
         * @param time
         *            时间设置,参考quartz说明文档
         * @throws SchedulerException
         * @throws ParseException
         */
        public static void addJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName, Job job, String time) throws SchedulerException, ParseException {
            Scheduler sched = sf.getScheduler();
            JobDetail jobDetail = new JobDetail(jobName, jobGroupName, job.getClass());// 任务名,任务组,任务执行类
            // 触发器
            CronTrigger trigger = new CronTrigger(triggerName, triggerGroupName);// 触发器名,触发器组
            trigger.setCronExpression(time);// 触发器时间设定
            sched.scheduleJob(jobDetail, trigger);
            if (!sched.isShutdown())
                sched.start();
        }
     
        /**
         * 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名)
         * 
         * @param jobName
         * @param time
         * @throws SchedulerException
         * @throws ParseException
         */
        public static void modifyJobTime(String jobName, String time) throws SchedulerException, ParseException {
            Scheduler sched = sf.getScheduler();
            Trigger trigger = sched.getTrigger(jobName, TRIGGER_GROUP_NAME);
            if (trigger != null) {
                CronTrigger ct = (CronTrigger) trigger;
                ct.setCronExpression(time);
                sched.resumeTrigger(jobName, TRIGGER_GROUP_NAME);
            }
        }
     
        /**
         * 修改一个任务的触发时间
         * 
         * @param triggerName
         * @param triggerGroupName
         * @param time
         * @throws SchedulerException
         * @throws ParseException
         */
        public static void modifyJobTime(String triggerName, String triggerGroupName, String time) throws SchedulerException, ParseException {
            Scheduler sched = sf.getScheduler();
            Trigger trigger = sched.getTrigger(triggerName, triggerGroupName);
            if (trigger != null) {
                CronTrigger ct = (CronTrigger) trigger;
                // 修改时间
                ct.setCronExpression(time);
                // 重启触发器
                sched.resumeTrigger(triggerName, triggerGroupName);
            }
        }
     
        /**
         * 移除一个任务(使用默认的任务组名,触发器名,触发器组名)
         * 
         * @param jobName
         * @throws SchedulerException
         */
        public static void removeJob(String jobName) throws SchedulerException {
            Scheduler sched = sf.getScheduler();
            sched.pauseTrigger(jobName, TRIGGER_GROUP_NAME);// 停止触发器
            sched.unscheduleJob(jobName, TRIGGER_GROUP_NAME);// 移除触发器
            sched.deleteJob(jobName, JOB_GROUP_NAME);// 删除任务
        }
     
        /**
         * 移除一个任务
         * 
         * @param jobName
         * @param jobGroupName
         * @param triggerName
         * @param triggerGroupName
         * @throws SchedulerException
         */
        public static void removeJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName) throws SchedulerException {
            Scheduler sched = sf.getScheduler();
            sched.pauseTrigger(triggerName, triggerGroupName);// 停止触发器
            sched.unscheduleJob(triggerName, triggerGroupName);// 移除触发器
            sched.deleteJob(jobName, jobGroupName);// 删除任务
        }
    }
    

      

  • 相关阅读:
    org.hibernate.HibernateException: No Session found for current thread
    TCP/IP协议 HTTP协议
    [ERROR][org.springframework.web.context.ContextLoader][main] Context initialization failed org.sprin
    oracle 导出表结构和数据,使用plsql
    jar包里查找指定的class文件,排查是否存在或重复,工具软件:Java Class Finder
    maven手动安装jar到本地仓库
    The reference to entity “idNo” must end with the ';' delimiter 异常处理
    activeMQ下载,安装,启动,关闭
    Oracle错误:ORA-01033
    -Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m
  • 原文地址:https://www.cnblogs.com/a757956132/p/4823275.html
Copyright © 2020-2023  润新知