首先需要在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