Quartz(1)----入门示例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_23490433/article/details/89173048

1、什么是Quartz?

Quartz是一个完全由java编写的开源作业调度框架。

2、Quartz是用来做什么的?

Quartz是一个任务调度框架,比如你会遇到如下问题:

1)、每月25号,信用卡自动还款

2)、每天早上7:30闹钟

这些问题总结起来就是:在某一个有规律的时间点干某件事情,并且时间的触发条件可以非常复杂(比如每月最后一个工作日的17:50),复杂到需要一个专门的框架来干这件事。而quartz就是干这件事的,我们可以给它一个触发条件的定义,它负责到了时间点,触发相应的job起来干活。

3、Quartz入门示例

要求每隔2秒钟,打印hello world!

第一步、新建maven工程,结构如下图:

第二步、在pom.xml中导入所需要的jar包,如下:


    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.2.1</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

第三步、HelloJob代码如下:

package com.cn.quartz;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

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

/**
 * 实现Job类,重写execute()方法
 * */
public class HelloJob implements Job {

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        //打印当前执行的时间
        Date date=new Date();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("当前时间:"+sdf.format(date));
        //编写具体的业务逻辑
        System.out.println("hello world!");


    }
}

第四步、HelloScheduler代码如下:

package com.cn.quartz;

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

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

/**
 * 作业调度器
 * */
public class HelloScheduler {
    public static void main(String[] args) throws SchedulerException {
        //创建一个JobDetail实例,将该实例与HelloJob绑定
        JobDetail jobDetail= JobBuilder.newJob(HelloJob.class).withIdentity("myJob","group1").build();
        //创建一个Trigger实例,定义该job立即执行,并且每隔2秒钟重复执行一次
        Trigger trigger= TriggerBuilder.newTrigger().withIdentity("myTrigger","group1").startNow()
                .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever()).build();
        //创建Schedule实例
        SchedulerFactory schedulerFactory=new StdSchedulerFactory();
        Scheduler scheduler=schedulerFactory.getScheduler();
        scheduler.start();
        Date date=new Date();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
        System.out.println("当前时间:"+sdf.format(date));
        scheduler.scheduleJob(jobDetail,trigger);






    }
}

第五步、测试

运行main方法,结果如下图:

猜你喜欢

转载自blog.csdn.net/sinat_23490433/article/details/89173048