springboot中@Scheduled 和@Async的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot中@Scheduled 和@Async的使用相关的知识,希望对你有一定的参考价值。

参考技术A 首先,需要了解@Scheduled 和@Async这俩注解的区别:

@Scheduled 任务调度注解,主要用于配置定时任务;springboot默认的调度器线程池大小为 1。

注意:在spring中的@schedule默认的线程池中只有一个线程,所以如果在多个方法上加上@schedule的话,此时就会有多个任务加入到延时队列中,因为只有一个线程,所以任务只能被一个一个的执行

@Async 任务异步执行注解,主要用于方法上,表示当前方法会使用新线程异步执行;springboot默认执行器线程池大小为100。

此注解会将这个任务放入到一个异步线程中执行,不会阻塞主线程,可以用在一些比较耗时并且不用考虑返回值的一些操作中

使用:

2.在定时任务上加上注解

可以看到控制台输出已经是异步执行了

总结

1 默认@schedule 线程池默认只有一个线程,多个任务时串行 串行

2 默认@schedule + @Aysnc 多个任务之间串行,单个任务非阻塞异步执行 并行+异步

以上是关于springboot中@Scheduled 和@Async的使用的主要内容,如果未能解决你的问题,请参考以下文章

spring boot @Scheduled未生效原因

SpringBoot @Scheduled多线程执行

玩转SpringBoot之定时任务@Scheduled线程池配置-

SpringBoot中使用@Scheduled创建定时任务

SpringBoot学习18:springboot使用Scheduled 定时任务器

springboot 定时任务@Scheduled注解