任务调度 Quartz 学习(一) SimpleTrigger

概述:

  在实际开发过程中,会遇到很多任务调度的需求。

  比如说:某网站要在每周一上午9点更新网站数据,并发邮件通知用户;

  再比如某论坛需求:每隔半个小时生成精华文章的RSS文件,每天凌晨统计论坛用户的积分排名,每隔30分钟执行锁定用户解锁任务。

  这时就可以使用quartz来实现了。

几个重要的类:

  ●Job(接口)

public interface Job {
    void execute(JobExecutionContext var1) throws JobExecutionException;
}

  JobDetail: 真正的任务内容,任务本身是集成Job接口的,但是真正的任务是JobBuilder通过反射的方式实例化的,
  Trigger: 触发器,定义任务应当开始的时间,主要分为两类SimpleTrigger,CronTrigger;CronTrigger主要用于处理quartz表达式定义的任务,比如每个月20号,每个星期一之类的。
  Scheduler:任务调度器, 计划执行者,现在我们有了要做的内容(jobdetail),有了要做的时间(trigger),接下来,就把这两个内容填充到计划任务Scheduler对象里面,到了时间它就可以自动运行了

Example:

  

public class MyJob implements Job{

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        System.out.println("测试quartz"+new Date());
    }


    //SimpleTrigger
    public static void simpleTrigger(){

        //获得schedulerFactory用来产生scheduler对象
        SchedulerFactory sf=new StdSchedulerFactory();
        Scheduler sche=null;

        //定义一个job,并绑定自己定义的MyJob类;利用反射实例化一个JobDetail类
        JobDetail jobDetail= JobBuilder.newJob(MyJob.class).withIdentity("test_job1","group1").build();

        //定义一个触发器
        Trigger trigger= TriggerBuilder.newTrigger().withIdentity("trigger_1","group1")
                .startNow()
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                        .withIntervalInSeconds(5) //重复间隔
                        .withRepeatCount(5)) //重复次数
                .build();

        try {
            //利用schedulerFactory产生scheduler对象
            sche=sf.getScheduler();
            //将jobDetail和trigger放入scheduler
            sche.scheduleJob(jobDetail,trigger);
            sche.start();

        } catch (SchedulerException e) {
            e.printStackTrace();
        }
        finally{
            try {
                sche.shutdown(true);  //关闭调度
            } catch (SchedulerException e) {
                e.printStackTrace();
            }
        }
    }
}

 

转载于:https://www.cnblogs.com/nww57/p/5192145.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值