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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。