使用@Async开启多线程方法

tech2025-01-22  23

springboot使用@Async开启多线程

首先设计Async一个线程池配置类:

@Configuration public class TaskPoolConfig { @Bean("AsyncTask") @Primary public Executor taskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(10);//核心数 executor.setMaxPoolSize(20);//最大数 executor.setQueueCapacity(200);//队列大小 executor.setKeepAliveSeconds(60); executor.setThreadNamePrefix("-TaskExecutor-"); executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); return executor; } }

然后在需要开启多线程的方法前加上@Async注解即可

@Async("AsyncTask") public CompletableFuture<List> SelectAllUserData(){ List<User> list= userMapper.SelectAllUser(); return CompletableFuture.completedFuture(list); }

!最后在启动类加上@EnableAsync 注解 ! 注意!!! 有返回值的方法记得把返回值类型修改成Future或者CompletableFuture类型,不然页面无法获取返回值。因为开启多线程后,可以允许线程先返回一个无关结果,其他耗时的操作会在后台进行。

最新回复(0)