Java学习之定时任务框架Quartz

Quartz 的核心类有以下三部分:
Job : 需要实现的任务类,实现 execute() 方法,执行后完成任务。
Trigger : 包括 SimpleTrigger 和 CronTrigger。
Scheduler : 任务调度器,负责基于 Trigger触发器,来执行 Job任务。

简单示例

1.pom配置

 2.创建Job

public class TueJob extends BaseJob implements Job {

@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd hh:mm:ss");
System.out.println(LocalDateTime.now().format(formatter));
}
}

3.创建Tirgger 和 Scheduler

package org.example;

import myjob.*;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

/**
* 0 15 15 ? * * : 表示每天下午3:15执行
* 0 15 10 ? * MON-FRI : 表示每个星期1 ~ 5的上午10:15执行
* 0 0 18 ? * FRI : 表示每个星期5的下午6点执行
* @return
*/
public class MyScheduler {

/**
* @param args
* @throws SchedulerException
*/

public static void main(String[] args) throws SchedulerException {
SchedulerFactory factory = new StdSchedulerFactory();
Scheduler scheduler = factory.getScheduler();
JobDetail job1 = JobBuilder.newJob(TueJob.class).withIdentity("TueJob", "leagueJob").build();
JobDetail job2 = JobBuilder.newJob(ThuJob.class).withIdentity("ThuJob", "leagueJob").build();
JobDetail job3 = JobBuilder.newJob(FriJob.class).withIdentity("FriJob", "leagueJob").build();
JobDetail job4 = JobBuilder.newJob(SatJob.class).withIdentity("SatJob", "leagueJob").build();
JobDetail job5 = JobBuilder.newJob(SunJob.class).withIdentity("SunJob", "leagueJob").build();
Trigger tueTrigger = tueTrigger();
Trigger thuTrigger = thuTrigger();
Trigger friTrigger = friTrigger();
Trigger satTrigger = satTrigger();
Trigger sunTrigger = sunTrigger();
scheduler.scheduleJob(job1, tueTrigger);
scheduler.scheduleJob(job2, thuTrigger);
scheduler.scheduleJob(job3, friTrigger);
scheduler.scheduleJob(job4, satTrigger);
scheduler.scheduleJob(job5, sunTrigger);
System.out.println("-----------------Job Start-----------------------------");
scheduler.start();
}


/**
* 时间: 每个星期2 早上6点
* 执行: 英超, 西甲的初盘和终盘
* 0 0 6 ? * TUE : 表示每个星期2的早上6点
* @return
*/
private static Trigger tueTrigger() {
String cronExpression = "0 0 6 ? * TUE";
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("tueTrigger", "tueGroup")
.startNow()
.withSchedule(CronScheduleBuilder.cronSchedule(cronExpression))
.build();
return trigger;
}


/**
* 时间: 每个星期4 早上6点
* 执行: 英超, 西甲的终盘
* 0 0 6 ? * THU : 表示每个星期5的下午6点执行
* @return
*/
private static Trigger thuTrigger() {
String cronExpression = "0 0 6 ? * THU";
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("thuTrigger", "thuGroup")
.startNow()
.withSchedule(CronScheduleBuilder.cronSchedule(cronExpression))
.build();
return trigger;
}

/**
* 时间: 每个星期5 早上6点
* 执行: 澳超初盘和终盘
* 0 0 6 ? * FRI : 表示每个星期5的下午6点执行
* @return
*/
private static Trigger friTrigger() {
String cronExpression = "0 0 6 ? * FRI";
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("friTrigger", "friGroup")
.startNow()
.withSchedule(CronScheduleBuilder.cronSchedule(cronExpression))
.build();
return trigger;
}

/**
* 时间: 每个星期6 早上6点
* 执行: 英超, 西甲, 澳超的终盘
* 0 0 6 ? * SAT : 表示每个星期5的早上6点
* @return
*/
private static Trigger satTrigger() {
String cronExpression = "0 0 6 ? * SAT";
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("satTrigger", "satGroup")
.startNow()
.withSchedule(CronScheduleBuilder.cronSchedule(cronExpression))
.build();
return trigger;
}

/**
* 时间: 每个星期7 早上6点
* 执行: 英超, 西甲, 澳超的终盘
* 0 0 6 ? * SUN : 表示每个星期5的早上6点
* @return
*/
private static Trigger sunTrigger() {
String cronExpression = "0 0 6 ? * SUN";
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("sunTrigger", "sunGroup")
.startNow()
.withSchedule(CronScheduleBuilder.cronSchedule(cronExpression))
.build();
return trigger;
}
}
posted @ 2024-11-13 16:16  狗狗听话  阅读(86)  评论(0编辑  收藏  举报