定时任务Quartz
定时任务
定时任务好比是一个闹钟,设置指定时间执行某一段业务逻辑,在金融系统使用较多,比如计算每天的收益等,或者惊醒一天的日志拷贝和分析等。
定时任务的场景:
1、静态资源服务器上的图片定期清理。
Quartz定时任务
Quartz是一个实现定时任务的框架。
实现步骤
导入依赖
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
创建Job任务
package com.yangfan.quartz;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
//需要定时执行的任务
public class MyJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException{
System.out.println("业务逻辑");
}
}
启动任务
package com.yangfan.quartz;
import org.quartz.CronExpression;
import org.quartz.JobBuilder;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.impl.triggers.CronTriggerImpl;
import java.text.ParseException;
public class Start {
public static void main(String[] args) throws SchedulerException, ParseException {
StdSchedulerFactory stdSchedulerFactory = new StdSchedulerFactory();
//任务执行者
Scheduler scheduler = stdSchedulerFactory.getScheduler();
//任务
JobBuilder name1 =
JobBuilder.newJob().ofType(MyJob.class).withIdentity("name1");
//触发器(定时器)
CronTriggerImpl cronTrigger = new CronTriggerImpl("trigger");
//执行规则
cronTrigger.setCronExpression("0/5 * * * * ?");
scheduler.scheduleJob(name1.build(),cronTrigger);
scheduler.start();
} }
表达式规则
执行规则表达式 0/3 * * * * ? * 秒 分 小时 日 月 星期 年
链接:表达式生成器