參考文章:https://blog.csdn.net/noaman_wgs/article/details/80984873
定時任務有這麼幾部分組成,專門寫業務邏輯的地方(job);定時信息的設置(Trigge ); 調度器 Scheduler(將任務job與 觸發器Trigge 結合 );
完整的demo 直接上代碼吧:
package com.quartz.task;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
* @ClassName TaskJob
* @Description TODO
* @Date 2019/10/17 10:22
* @Version 1.0.0
**/
public class TaskJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("任務執行中---------");
}
}
package com.quartz.task;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import java.util.Date;
import java.util.concurrent.TimeUnit;
/**
* @ClassName MyScheduler
* @Description TODO 該類是定時任務實現的實例 完全基於代碼 ,而不是xml方式實現的
* @Date 2019/10/17 10:23
* @Version 1.0.0
**/
public class MyScheduler {
public static void main(String[] args) throws SchedulerException, InterruptedException {
//1 創建 scheduler 實例
SchedulerFactory scheFactory =new StdSchedulerFactory();
Scheduler scheduler = scheFactory.getScheduler();
// 2 創建JobDeatil 實例
JobDetail jobDetail = JobBuilder.newJob(TaskJob.class)
.withIdentity("job1", "group1").build();
// 3 創建Trigger實例 每隔一秒 執行一次
// Trigger trigger = TriggerBuilder.newTrigger()
// .withIdentity("trigger", "trigger")
// .startNow()
// .withSchedule(
// SimpleScheduleBuilder.simpleSchedule()
// .withIntervalInMilliseconds(1000)
// .repeatForever()//一直執行
// ).build();
// 創建 CronTrigger
Date startDate = new Date();
startDate.setTime(startDate.getTime() + 5000);
Date endDate = new Date();
endDate.setTime(startDate.getTime() + 5000);
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger", "trigger")
.usingJobData("job1", "這是jobDetail1的trigger")
.startNow()//立即生效
.startAt(startDate)
.endAt(endDate)
// cron 表達式
.withSchedule(CronScheduleBuilder.cronSchedule("*/5 * * * * ?"))
.build();
// 4執行
scheduler.scheduleJob(jobDetail,trigger);
System.out.println("start 開始執行定時任務");
scheduler.start();
//睡眠
TimeUnit.MINUTES.sleep(1);
scheduler.shutdown();
System.out.println("--------scheduler shutdown ! ------------");
}
}