SpringBoot异步执行
异步执行简单例子
包括两部分,一个为线程池配置,另一个为异步执行代码本身。
比较简单,直接上代码。
// 线程池配置,可根据具体的需要配置线程池相关配置
@Configuration
public class ThreadPoolConfig {
/**
* 配置线程池
* @return
*/
@Bean(name = "taskExecutor")
public ThreadPoolTaskExecutor taskExecutor() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setCorePoolSize(24);
taskExecutor.setMaxPoolSize(64);
taskExecutor.setQueueCapacity(256);
taskExecutor.setKeepAliveSeconds(200);
taskExecutor.setThreadNamePrefix("task-");
taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
taskExecutor.initialize();
return taskExecutor;
}
}
异步执行代码
@Component
@Slf4j
public class SyncService {
/**
* @Async中可填写对应所要使用的线程池名称
* 不同的业务可使用不同配置的线程去执行
*/
@Async( "taskExecutor")
public void execute() {
log.info("执行");
}
}
main方法
//需添加此注解启动异步功能
@EnableAsync
@SpringBootApplication
public class SyncApplication {
public static void main(String[] args) {
SpringApplication.run(SyncApplication.class, args);
}
}