Java 定时任务 使用Quartz框架实现

## Java 定时任务 Quartz框架实现

1、在pom.xml中配置Quartz依赖

<!--quartz-->
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.0</version>
</dependency>
<!--调度器核心包-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>4.3.4.RELEASE</version>
</dependency>

2、Job定时任务的实现

package main.java.quartz;

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

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

public class HelloWorldQuartzJob implements Job {

    /**
     * 定时任务:当所定时间结束后,要执行的方法。
     * @param jobExecutionContext
     */
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        String strTime = new SimpleDateFormat("HH-mm-ss").format(new Date());//开始时间
        //执行任务代码块
        System.out.println(strTime + ":Helloword");
    }

}

3、任务的调度,包括所隔时间的配置

package main.java.application;

import main.java.quartz.HelloWorldQuartzJob;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

public class MyScheduler {
    public static void main(String[] args) throws SchedulerException {
        //创建调度器Schedule
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();
        //创建JobDetail实例,并与HelloWordJob类绑定
        JobDetail jobDetail = JobBuilder.newJob(HelloWorldQuartzJob.class)
        	.withIdentity("job1","jobGroup1").build();
        /*创建触发器Trigger实例(立即执行,5秒后执行一次);withRepeatCount(1):5秒后执行,只执行一次
        RepeatForever:指定触发器将无限期重复,每隔5秒都执行一次*/
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("trigger1","triggerGroup1")
                .startNow()
                .withSchedule( SimpleScheduleBuilder.simpleSchedule()
                .withIntervalInSeconds(5).withRepeatCount(1) )//5秒后执行一次
                .build();
        //开始执行
        scheduler.scheduleJob(jobDetail,trigger);
        scheduler.start();
    }
}

4、控制台的打印结果

间隔了5秒后打印的时间

1650866205662

posted @ 2022-04-25 14:01  晴天阴天下雨天  阅读(656)  评论(0)    收藏  举报