六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 28|回复: 0

quartz自动作业使用

[复制链接]

升级  40%

4

主题

4

主题

4

主题

童生

Rank: 1

积分
20
 楼主| 发表于 2013-2-7 15:39:47 | 显示全部楼层 |阅读模式
1.项目中导入quartz-1.5.2.jar.
2.创建一个执行类,用于定时执行某项任务.如:
package com.fleety.job;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.fleety.task.TestTask;
/**
* @name TestJob.java
* @author zhanghao
* @create Jun 14, 2011
*/
public class TestJob implements Job
{
    public void execute(JobExecutionContext context)
            throws JobExecutionException
    {
        System.out.println("test TestJob success :::" + new Date());
    }
}
3.创建测试类如:
package com.fleety.task;
import java.text.ParseException;
import java.util.Date;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;
import com.fleety.job.TestJob;
/**
* @name TestTask.java
* @author zhanghao
* @create Jun 14, 2011
*/
public class TestTask
{
    /**
     * SimpleTrigger(优点,可以指定重复次数和重复间隔)
     *
     * @throws SchedulerException
     */
    public static void taskSimpleTrigger() throws SchedulerException
    {
        // 创建一个作业工厂
        SchedulerFactory factory = new StdSchedulerFactory();
        // 得到作业调度对象
        Scheduler scheduler = factory.getScheduler();
        // 当前系统时间
        long currentTime = System.currentTimeMillis();
        // 作业对象
        JobDetail detail = new JobDetail("detail-s1", "detailGroup-s1",
                TestJob.class);
        // 触发器
        SimpleTrigger trigger = new SimpleTrigger("trigger", "triggerGroup-s1");
        // 指定触发时间
        trigger.setStartTime(new Date(currentTime));
        // 每隔多少时间触发一次
        trigger.setRepeatInterval(1000);
        // 触发多少次
        trigger.setRepeatCount(10);
        // 作业调度
        scheduler.scheduleJob(detail, trigger);
        // 启动作业调度
        scheduler.start();
    }
    /**
     * CronTrigger(优点,支持类似日历的重复间隔,而不是单一的时间间隔)
     */
    public static void taskCronTrigger()
    {
        try
        {
            // 创建作业调度对象
            Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
            // 启动调度
            scheduler.start();
            // 创建作业对象
            JobDetail jobDetail = new JobDetail("TestJob", Scheduler.DEFAULT_GROUP, TestJob.class);
            // 创建触发器
            CronTrigger cronTrigger = new CronTrigger("cronTrigger",Scheduler.DEFAULT_GROUP);
            // 设置触发时间(需要注意,天数和星期数不能同时指明,比如指明了某天,星期数就要用?来表示,指明了星期数,天数就用?表示)

            //每天的9点58分执行
            // cronTrigger.setCronExpression("0 58 9 * * ?");

            //表示每天的10点13分的5秒,10秒,15秒,20秒各执行一次
             cronTrigger.setCronExpression("5,10,15,20 13 10 * * ?");

            // 表示每天的10点17分,从0秒开始,每隔5秒执行一次
            // cronTrigger.setCronExpression("0/5 17 10 * * ?");

            //表示在2011年的6月15号的10点39分40秒执行一次
            // cronTrigger.setCronExpression("40 39 10 15 06 ? 2011");

            //表示每个星期4的10点47分20秒执行
            // cronTrigger.setCronExpression("20 47 10 ? * 4");

            //表示每个星期月的第三个星期3的11点55分的30秒--45秒之间,每隔一秒执行一次
            // cronTrigger.setCronExpression("30-45 55 11 ? * 4#3");

            //表示每个月的15号的12点整执行,但条件是(如果15号是工作日的话(即,星期一到星期五),那么执行,如果不是工作日的话,假如15号这天是星期6,那么则在14号这天执行,如果15号这天是星期天的话,则在16号执行)
            // cronTrigger.setCronExpression("00 00 12 15w * ?");

            //表示每个月的最后一个星期4的13点18分执行
            // cronTrigger.setCronExpression("00 18 13 ? * 5L");

            // 触发
            scheduler.scheduleJob(jobDetail, cronTrigger);
        }
        catch (SchedulerException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (ParseException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
    public static void main(String[] args)
    {
         TestTask.taskCronTrigger();
    }
}
附件为一个完整可运行的例子
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表