实战Quartz的Scheduler

一 点睛

1 Scheduler是通过工厂模式创建的。

所有的Scheduler实例由SchedulerFactory来创建。

2 Quartz的三个核心概念

  • 调度器
  • 任务
  • 触发器

3 Scheduler的创建方式

SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();

DirectSchedulerFactory factory = DirectSchedulerFactory.getInstance();
Scheduler scheduler1=factory.getScheduler();

4 SchedulerFactory

使用一组参数来创建和初始化Quartz调度器

配置参数一般存储在quartz.properties中

调用getScheduler方法就能创建和初始化调度器对象

5 Scheduler的主要函数

  • Date scheduleJob(JobDetail jobDetail, Trigger trigger):返回最近一次要执行任务的时间
  • void start():启动
  • void standby():暂停
  • void shutdown():完全关闭,不能再重启

二 实战——scheduleJob返回值

1 启动类

package com.quartz;

import org.quartz.*;
import org.quartz.impl.DirectSchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;

import java.text.SimpleDateFormat;
import java.util.Date;

public class HelloScheduler {

    public static void main( String[] args ) throws SchedulerException {
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("Current Time is:" + simpleDateFormat.format(date));

        //创建一个JobDetail实例, 将该实例与hellojob class 绑定
        JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
                .withIdentity("myJob").build();  //演示传递参数


        CronTrigger trigger = (CronTrigger) TriggerBuilder.newTrigger()
                .withIdentity("myTrigger", "group1")
                .withSchedule(
                        CronScheduleBuilder.cronSchedule("0/5 * 16,18 * * ?"))
                .build();

        //创建Schedule实例
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();
        scheduler.start();
        //scheduleJob返回的是最近一次要执行的时间
        System.out.println("scheduled time is:"
                + simpleDateFormat.format(scheduler.scheduleJob(jobDetail, trigger)));

    }
}

2 测试结果

Current Time is:2018-11-17 14:15:01

scheduled time is:2018-11-17 16:00:00

三 实战——演示standby

1 启动类

package com.quartz;

import org.quartz.*;
import org.quartz.impl.DirectSchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;

import java.text.SimpleDateFormat;
import java.util.Date;

public class HelloSch
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值