zoukankan      html  css  js  c++  java
  • Quartz实例:quartz定时任务代码示例

    转自:http://www.blogchong.com/post/96.html

    quartz定时任务调度框架,使用实例。

    Job类://即实际调度任务实现

    package net.csdn.edm.util.quartz;
     
    import java.util.HashMap;
    import java.util.Map;
    import net.csdn.common.logging.CSLogger;
    import net.csdn.common.logging.Loggers;
    import org.quartz.Job;
    import org.quartz.JobDataMap;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
     
    /**
     * @author:blogchong
     * @Version:1.0
     * @CreateTime:2014年12月30日 下午3:27:02
     * @Description:定时进度job
     */
     
    public class QuartzJob implements Job {
     
        protected CSLogger logger = Loggers.getLogger(QuartzJob.class);
     
        @SuppressWarnings("static-access")
        public void execute(JobExecutionContext arg0) throws JobExecutionException {
     
            // 接收参数
            JobDataMap jobDataMap = arg0.getJobDetail().getJobDataMap();
             
            //通过这种方式,传递参数
            String taskId = jobDataMap.getString("taskId");
             
            //具体的定时任务实现,在这里实现即可
                    //具体实现略过
        }
    }

    添加Job类:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    package net.csdn.edm.util.quartz;
    import net.csdn.common.logging.CSLogger;
    import net.csdn.common.logging.Loggers;
    import net.csdn.edm.util.MacroDef;
    import org.quartz.CronScheduleBuilder;
    import org.quartz.JobBuilder;
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.SchedulerFactory;
    import org.quartz.Trigger;
    import org.quartz.TriggerBuilder;
    import org.quartz.impl.StdSchedulerFactory;
    /**
     * @author:blogchong
     * @Version:1.0
     * @CreateTime:2014年12月30日 下午3:28:32
     * @Description:添加job接口
     */
    public class QuartzAdd {
    public static SchedulerFactory schedFact = new StdSchedulerFactory();
    protected static CSLogger logger = Loggers.getLogger(QuartzAdd.class);
    public static Scheduler sched;
    public static void startSched() throws SchedulerException {
    try {
    QuartzAdd.sched = QuartzAdd.schedFact.getScheduler();
    QuartzAdd.sched.start();
    catch (Exception e) {
    e.printStackTrace();
    }
    }
    public static boolean quartzAdd(String type, String taskId) throws Exception {
    try {
    // 若sched未赋值或者未启动,则先在全局中启动它
    if (QuartzAdd.sched == null || !QuartzAdd.sched.isStarted()) {
    QuartzAdd.startSched();
    }
    //定时规则,跟普通crontable的差不多
    String rule = "0 0/" + MacroDef.QUARTZ_INTERVAL + " * * * ?";
    //设置组名,和任务名
    String quartz_name = taskId;
    String quartz_group = type;
    // 创建jobDetail实例,指定job名以及所属组
    JobDetail jobDetail = JobBuilder.newJob(QuartzJob.class)
    .withIdentity(quartz_name, quartz_group).build();
    jobDetail.getJobDataMap().put("taskId", taskId);
    Trigger trigger = TriggerBuilder
    .newTrigger()
    .withIdentity(quartz_name, quartz_group)
    .withSchedule(
    CronScheduleBuilder.cronSchedule(rule))
    .startNow().build();
    QuartzAdd.sched.scheduleJob(jobDetail, trigger);
    logger.info("[已添加定时获取进度任务, taskID:" + taskId + ", type:" + type + "]");
    return true;
    catch (Exception e) {
    logger.error("[添加定时任务出错,任务号:" + taskId + "]");
    logger.error(e.toString());
    return false;
    }
    }
    }
  • 相关阅读:
    Android自定义权限和使用权限
    SendInput模拟Win(VK_LWIN)键的问题
    难以置信,根本就没拖延症!
    Android RecyclerView单击、长按事件:基于OnItemTouchListener +GestureDetector标准实现(二),封装抽取成通用工具类
    Android RecyclerView单击、长按事件标准实现:基于OnItemTouchListener + GestureDetector
    Android ViewPager Fragment使用懒加载提升性能
    Android快捷便利但不常被使用的原生工具类
    Android TextView图文混合编排
    JQuery中$.ajax()方法参数详解 及 async属性说明
    jQuery.ajaxComplete() 函数详解
  • 原文地址:https://www.cnblogs.com/sharpest/p/8571890.html
Copyright © 2011-2022 走看看