Java实战中如何自定义线程池实现@Async异步处理?

2026-05-21 03:202阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1706个文字,预计阅读时间需要7分钟。

Java实战中如何自定义线程池实现@Async异步处理?

一、@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分钟。

Java实战中如何自定义线程池实现@Async异步处理?

一、@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自定义线程池。

阅读全文