基于注解实现静态简易定时任务
集成
Quartz
实现动态定时任务
前言
先理一理定时任务
定时任务的本质,有三大步
1. Job:要执行的任务,比如定时传输文件,定时更新某些数据,等等操作。
2. Trigger:Job 的执行规则,比如什么时候执行,执行间隔,执行次数,等等规则。
3. Scheduler:有了Job,有了Trigger,但 用哪个Trigger执行哪个Job?这时候就轮到Scheduler登场了
一、基于注解实现静态简易定时任务
直接上代码,这个比较简单,主要关注里面的 cron
表达式,详细语法可点击这里
@Configuration@EnableSchedulingpublicclassStaticScheduleTask{@Scheduled(cron="0/5****?")//每隔5秒执行一次publicvoidconfigurationTask(){System.out.println("执行定时任务="+LocalDateTime.now());getData();}publicstaticvoidgetData(){Map<String,Object>map=newHashMap<>();map.put("001","zhangsan");map.put("002","lisi");System.out.println(map);}
二、集成 Quartz
实现动态定时任务
上代码
/***@DescriptionJob定时任务要完成的工作*/publicclassMyJobimplementsJob{@Overridepublicvoidexecute(JobExecutionContextjobExecutionContext){System.out.println("正在执行Job"+LocalDateTime.now());}}
publicclassMyScheduler{publicstaticvoidmain(String[]args)throwsSchedulerException{//1、创建调度器SchedulerSchedulerFactoryschedulerFactory=newStdSchedulerFactory();Schedulerscheduler=schedulerFactory.getScheduler();//2、创建JobDetail实例,并与MyJob类绑定(Job执行内容)JobDetailjobDetail=JobBuilder.newJob(MyJob.class).usingJobData("jobDetail1","这个Job用来测试的").withIdentity("job1","group1").build();//3、构建Trigger实例,每隔1s执行一次CronTriggercronTrigger=TriggerBuilder.newTrigger().withIdentity("trigger1","triggerGroup1").usingJobData("trigger1","这是jobDetail1的trigger").startNow()//立即生效.withSchedule(CronScheduleBuilder.cronSchedule("0/5****?")).build();//4、执行scheduler.scheduleJob(jobDetail,cronTrigger);System.out.println("--------schedulerstart!------------");scheduler.start();System.out.println("--------schedulershutdown!------------");}