EnableAsync与Async注解实现共享线程池

本文总阅读量
本文最后更新于2 分钟前,文中所描述的信息可能已发生改变。

SpringBoot中使用@EnableAsync与@Async实现共享线程池

  • 首先需要定义一个配置类对ThreadPoolTaskExecutor对象进行配置,并交给容器

ThreadPoolTaskExecutor对象是Spring中的一个用于执行异步任务的线程池

java
@Configuration  
@EnableAsync  //开启异步支持
public class ThreadPoolConfig {  
	@Bean("TaskExecutor") //指定线程池名称 
	public Executor threadPoolTaskExecutor(){  
		ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();  
		/*设置核心线程数*/  
		executor.setCorePoolSize(5);  
		/*设置最大线程数*/  
		executor.setMaxPoolSize(10);  
		/*设置队列容量*/  
		executor.setQueueCapacity(255);  
		/*设置线程活跃时间*/  
		executor.setKeepAliveSeconds(60);  
		/*设置线程名后缀*/  
		executor.setThreadNamePrefix("@holo");  
		/*设置是否等待任务全部执行完结束线程池*/  
		executor.setWaitForTasksToCompleteOnShutdown(true);  
		/*初始化线程池*/  
		executor.initialize();  
		return executor;  
	}  
}
  • 然后在需要异步执行的地方加上注解@Async("TaskExecutor")并在其中指定线程池的名称即可,该方法就会被线程池中的线程进行执行。

利用ThreadLocal来进行存储用户信息

ThreadLocalJava当中的一个本地线程变量,是一个属于线程的局部变量,各个线程之间互不干扰,具有隔离性,是线程安全的。 原理:每个线程其实都有一个map

SpringBoot当中使用自定义注解结合AOP做权限校验
Docker容器间的相互访问
Valaxy v0.18.5 驱动 | 主题 - Yun v0.18.5
本站总访问量
本站访客数 人次
本站已运行0 天0 小时0 分0 秒后缀