一、定时任务
定时任务好比是一个闹钟,设置指定时间执行某一段业务逻辑,在金融系统使用较多,比如计算每天的收益等,或者进行一天的日志拷贝和分析等等。
独立图片服务器进行无效图片清理的工作,可以使用定时任务每星期清理一次。
定时任务使用场景
Quartz定时任务框架
Quartz是一个实现定时任务的框架。
实现步骤
导入依赖
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
创建Job任务
package com.qianfeng.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.qianfeng.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/3 * * * * ?");
scheduler.scheduleJob(name1.build(),cronTrigger);
scheduler.start();
}
}
执行规则表达式
0/3 * * * * ? *
秒 分 小时 日 月 星期 年