Quartz:定时任务调度框架
Quartz Enterprise Job Scheduler
1.Quartz的使用
1)依赖
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
2)创建一个工作类继承Job
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("MyJob:"+new Date().toLocaleString());
}
}
3)两种方式
SimpleTrigger
以一定的时间间隔(单位是毫秒)执行的任务。
* 指定起始和截止时间(时间段)
* 指定时间间隔、执行次数CronTrigger
适合于更复杂的任务,它支持类型于Linux Cron的语法(并且更强大)。
指定Cron表达式即可
SimpleTrigger
public class SimpleTriggerTest {
public static void main(String[] args) throws SchedulerException {
//指定时间执行相应任务
//任务调度器
Scheduler defaultScheduler = StdSchedulerFactory.getDefaultScheduler();
//任务详情对象
JobDetail jobDetail = JobBuilder.newJob(MyJob.class).withIdentity("myjob", "myjobGroup").build();
//触发器
SimpleTrigger simpleTrigger = TriggerBuilder.newTrigger().withIdentity("myjob", "myjobGroup")
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.repeatForever().withIntervalInSeconds(5))//每隔5秒中执行一次
//.withRepeatCount(5)//一共执行5次
.startNow()//表示立即执行,startAt()指定时间执行
//输入的月份 + 1 才是当前月份
.endAt(new GregorianCalendar(2021, 9, 22, 11, 10, 59).getTime())
.build();
defaultScheduler.scheduleJob(jobDetail,simpleTrigger);
defaultScheduler.start();
}
}
CronTrigger
public class CronTriggerTest {
public static void main(String[] args) throws Exception{
//任务调度器
Scheduler defaultScheduler = StdSchedulerFactory.getDefaultScheduler();
//任务详情对象
JobDetail jobDetail = JobBuilder.newJob(MyJob.class).withIdentity("myjob", "myjobGroup").build();
// //触发器
CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("DSB", "DSBSN")
.withSchedule(CronScheduleBuilder.
cronSchedule("* * * * * ? ")).build();
defaultScheduler.scheduleJob(jobDetail,cronTrigger);
defaultScheduler.start();
}
}