Java实战中如何自定义线程池实现@Async异步处理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1706个文字,预计阅读时间需要7分钟。
一、@Async注解的作用就是异步处理任务。在方法上添加@Async,表示此方法为异步方法;在类上添加@Async,表示类中所有的方法都是异步方法。使用此注解的类必须是Spring管理的Bean,否则无法使用异步功能。
一、@Async注解
@Async的作用就是异步处理任务。
在方法上添加@Async,表示此方法是异步方法;在类上添加@Async,表示类中的所有方法都是异步方法;使用此注解的类,必须是Spring管理的类;需要在启动类或配置类中加入@EnableAsync注解,@Async才会生效;在使用@Async时,如果不指定线程池的名称,也就是不自定义线程池,@Async是有默认线程池的,使用的是Spring默认的线程池SimpleAsyncTaskExecutor。
默认线程池的默认配置如下:
默认核心线程数:8;最大线程数:Integet.MAX_VALUE;队列使用LinkedBlockingQueue;容量是:Integet.MAX_VALUE;空闲线程保留时间:60s;线程池拒绝策略:AbortPolicy;从最大线程数可以看出,在并发情况下,会无限制的创建线程,我勒个吗啊。
也可以通过yml重新配置:
spring: task: execution: pool: max-size: 10 core-size: 5 keep-alive: 3s queue-capacity: 1000 thread-name-prefix: my-executor也可以自定义线程池,下面通过简单的代码来实现以下@Async自定义线程池。
本文共计1706个文字,预计阅读时间需要7分钟。
一、@Async注解的作用就是异步处理任务。在方法上添加@Async,表示此方法为异步方法;在类上添加@Async,表示类中所有的方法都是异步方法。使用此注解的类必须是Spring管理的Bean,否则无法使用异步功能。
一、@Async注解
@Async的作用就是异步处理任务。
在方法上添加@Async,表示此方法是异步方法;在类上添加@Async,表示类中的所有方法都是异步方法;使用此注解的类,必须是Spring管理的类;需要在启动类或配置类中加入@EnableAsync注解,@Async才会生效;在使用@Async时,如果不指定线程池的名称,也就是不自定义线程池,@Async是有默认线程池的,使用的是Spring默认的线程池SimpleAsyncTaskExecutor。
默认线程池的默认配置如下:
默认核心线程数:8;最大线程数:Integet.MAX_VALUE;队列使用LinkedBlockingQueue;容量是:Integet.MAX_VALUE;空闲线程保留时间:60s;线程池拒绝策略:AbortPolicy;从最大线程数可以看出,在并发情况下,会无限制的创建线程,我勒个吗啊。
也可以通过yml重新配置:
spring: task: execution: pool: max-size: 10 core-size: 5 keep-alive: 3s queue-capacity: 1000 thread-name-prefix: my-executor也可以自定义线程池,下面通过简单的代码来实现以下@Async自定义线程池。

