工作中遇到需求,需要从数据库中取到执行时间,执行定时任务发送文件。网上搜了搜,大多数都是5秒钟。 干脆查一查API,简单测试留个笔记。
导入pom.xml 依赖
<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>
Job代码(可换为自己要执行的程序)
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class QuartzJob implements Job{
//重写的Job中的方法
public void execute() throws JobExecutionException{
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String currentDate = format.format(date);
System.out.println("开始Job定时任务 "+ currentDate );
}
}
调度器代码
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzSch{
public static void main(String[] args){
String time = "6";
new QuartzSch().quartzTest(time);
}
public void quartzTest(String time){
//创建调度器
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
//创建job,对job添加描述
JobDetail jobDetail = JobBuilder.newJob(QuartzJob .class).withIdentity("job1","group1").build();
//创建触发器
//把间隔当做参数传入表达式
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("simpleTrigger","simpleTriggerGroup").startNow().
withSchedule(CronScheduleBuilder.cronSchedule("0/" + time + " * * * * ?")).build();
//在调度器中 绑定job和触发器
scheduler.scheduleJob(jobDetail,trigger );
scheduler.start();
}catch(SchedulerException e){
e.printStackTrace();
}
}
运行结果(time 为 6)
大家可以按自己需求自行配置,仅供参考。