1、创建线程配置类,初始化spring线程池,@Configuration配置类注解@EnableAsync开启异步支持
@Configuration
@EnableAsync
public class ThreadConfig implements AsyncConfigurer{
@Override
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
//线程池维护线程的最少数量
executor.setCorePoolSize(8);
//线程池维护线程的最大数量
executor.setMaxPoolSize(1000);
//线程池所使用的缓冲队列
executor.setQueueCapacity(500);
//线程池维护线程所允许的空闲时间
executor.setKeepAliveSeconds(30000);
executor.initialize();
return executor;
}
@Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
return null;
}
}
2、创建service方法,实现类中该方法添加@Async注释
service:
void threadTest(int i);
serviceImpl:
@Override
@Async
public void threadTest(int i) {
for (int j = 0; j < 100; j++){
System.out.println("线程" + i + Thread.currentThread().getName() + " 执行异步任务:" + j);
}
}
3、调用
@GetMapping
public Result threadTest(){
for (int i = 0; i < 100; i++){
service.threadTest(i);
}
}
以上service与调用的代码块是伪代码,具体根据自己情况编写,主要差别在于注释
---------------------------------------------------------------------------------------------------------------------------
若笔记中存在错误的地方,还望指出共同学习