设置定时执行任务

首先需要在pom文件中应用定时执行任务包

	  <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>2.2.1</version>
      </dependency>
      <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz-jobs</artifactId>
        <version>2.2.1</version>
      </dependency>

具体的定时任务实现方式
1.首先创建需要定时执行的任务testJob,实现一个类继承job类

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Created by root on 2018/5/7.
 */
public class testJob implements Job {
    private static Logger logger = LoggerFactory.getLogger(testJob.class);
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        logger.info("这是一个定时任务,启动时间为"+System.currentTimeMillis());
    }
}

2.指定具体执行时间

//创建任务通道
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler scheduler = sf.getScheduler()
//加载需要执行的JOB
JobDetail jobByDay = newJob(testJob.class).withIdentity("myjob", Scheduler.DEFAULT_GROUP).build();
//设置执行时间,该例子中是让程序每天凌晨个00:00:00执行testJob
CronTrigger triggerByDay = newTrigger().withIdentity("trigger_ByDay", Scheduler.DEFAULT_GROUP).withSchedule(cronSchedule("0 0 0 * * ?")).build();

3.指定的执行时间是在cronSchedule()中进行配置,配置的格式为

Seconds Minutes Hours DayofMonth Month DayofWeek Year或
Seconds Minutes Hours DayofMonth Month DayofWeek

需要注意的点是
1.设置年的参数可以省略
2.DayofMonth配置的是,在每月的几号执行
DayofWeek 配置的是,在每月的周几执行
所以这两个参数基本是互斥的,不允许同时配置,当配置其中一项是,另外一项需要赋值?问号。所以认为必定存在一个问号?。例如
0 0 2 1 * ? 在每月的1日的凌晨2点执行调度任务
时间段的设置形式为x-y,例如
0 0 2 1-4 * ?在每月的1~4号凌晨2点执行调度任务
多个时间点的设置形式为x,y,z例如
0 0 10,14,16 ? * 2 在每个星期一上午10点,下午2点,4点 执行调度任务

基础的时间格式上述足够使用,如果需要更复杂的介绍,请查看
https://www.cnblogs.com/linjiqin/archive/2013/07/08/3178452.html

猜你喜欢

转载自blog.csdn.net/lazy_zzzzzz/article/details/80227669
今日推荐