SpringBoot任务调度器的实现代码
SpringBoot自带了任务调度器,通过注解的方式使用。
启用方式:在配置类上注解org.springframework.scheduling.annotation.EnableScheduling
Java示例
packagebj.scheduler;
importlombok.extern.slf4j.Slf4j;
importorg.springframework.boot.SpringApplication;
importorg.springframework.boot.autoconfigure.SpringBootApplication;
importorg.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
importorg.springframework.scheduling.annotation.EnableScheduling;
importorg.springframework.scheduling.annotation.Scheduled;
importorg.springframework.scheduling.annotation.Schedules;
importjava.time.LocalDateTime;
/**
*CreatedbyBaiJiFeiLong@gmail.comat2018/12/12下午2:51
*/
@SpringBootApplication(exclude=DataSourceAutoConfiguration.class)
@EnableScheduling
@Slf4j
publicclassSchedulerApp{
publicstaticvoidmain(String[]args)throwsInterruptedException{
SpringApplication.run(SchedulerApp.class,args);
Thread.currentThread().join();
}
@Schedules({
@Scheduled(fixedRate=1000),
@Scheduled(fixedDelay=1001),
@Scheduled(cron="******")
})
publicvoidsayHello(){
log.info("{}Hello",LocalDateTime.now());
}
}
要点
- @EnableScheduling启用任务调度器
- @Schedules组合多个调度器。多个调度器全部启用。
- @Scheduled单个调度器的配置
- fixedRate固定执行频率(毫秒),不计执行耗时
- fixedDelay固定执行延迟(毫秒),表示距离上次执行完毕的时长
- cronCronTab调度格式,第一位表示秒
控制台输出
._________
/\\/___'_____(_)______\\\\
(()\___|'_|'_||'_\/_`|\\\\
\\/___)||_)|||||||(_||))))
'|____|.__|_||_|_||_\__,|////
=========|_|==============|___/=/_/_/_/
::SpringBoot::(v2.1.0.RELEASE)
2018-12-1215:01:00.332INFO34660---[main]bj.scheduler.SchedulerApp:StartingSchedulerApponMacBook-Air-2.localwithPID34660(/Users/yuchao/temp/java/hellomaven/target/classesstartedbyyuchaoin/Users/yuchao/temp/java/hellomaven)
2018-12-1215:01:00.339INFO34660---[main]bj.scheduler.SchedulerApp:Noactiveprofileset,fallingbacktodefaultprofiles:default
2018-12-1215:01:02.395INFO34660---[main]o.s.s.c.ThreadPoolTaskScheduler:InitializingExecutorService'taskScheduler'
2018-12-1215:01:02.496WARN34660---[main]reactor.netty.tcp.TcpResources:[http]resourceswillusethedefaultLoopResources:DefaultLoopResources{prefix=reactor-http,daemon=true,selectCount=4,workerCount=4}
2018-12-1215:01:02.498WARN34660---[main]reactor.netty.tcp.TcpResources:[http]resourceswillusethedefaultConnectionProvider:PooledConnectionProvider{name=http,poolFactory=reactor.netty.resources.ConnectionProvider$$Lambda$278/687399269@6594402a}
2018-12-1215:01:02.707INFO34660---[scheduling-1]bj.scheduler.SchedulerApp:2018-12-12T15:01:02.707Hello
2018-12-1215:01:02.707INFO34660---[scheduling-1]bj.scheduler.SchedulerApp:2018-12-12T15:01:02.707Hello
2018-12-1215:01:02.708INFO34660---[main]bj.scheduler.SchedulerApp:StartedSchedulerAppin3.257seconds(JVMrunningfor4.997)
2018-12-1215:01:03.004INFO34660---[scheduling-1]bj.scheduler.SchedulerApp:2018-12-12T15:01:03.004Hello
2018-12-1215:01:03.704INFO34660---[scheduling-1]bj.scheduler.SchedulerApp:2018-12-12T15:01:03.704Hello
2018-12-1215:01:03.710INFO34660---[scheduling-1]bj.scheduler.SchedulerApp:2018-12-12T15:01:03.710Hello
2018-12-1215:01:04.002INFO34660---[scheduling-1]bj.scheduler.SchedulerApp:2018-12-12T15:01:04.002Hello
2018-12-1215:01:04.702INFO34660---[scheduling-1]bj.scheduler.SchedulerApp:2018-12-12T15:01:04.702Hello
2018-12-1215:01:04.712INFO34660---[scheduling-1]bj.scheduler.SchedulerApp:2018-12-12T15:01:04.712Hello
2018-12-1215:01:05.000INFO34660---[scheduling-1]bj.scheduler.SchedulerApp:2018-12-12T15:01:05Hello
2018-12-1215:01:05.700INFO34660---[scheduling-1]bj.scheduler.SchedulerApp:2018-12-12T15:01:05.700Hello
2018-12-1215:01:05.716INFO34660---[scheduling-1]bj.scheduler.SchedulerApp:2018-12-12T15:01:05.716Hello
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。