springboot线程池配置

线程池配置

/**
 * @Description: 异步处理线程池
 * @Author: zq
 * @Date: 2021/11/23 14:15
 **/
@Configuration
@EnableAsync
public class TaskExecutorConfig {

    /**
     * 异步处理线程
     * @return
     */
    @Bean(name = "screenTaskExecutor")
    public TaskExecutor taskExecutor() {
        int coreThreadCount = 70;
        int maxThreadCount = 100;
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        // 核心线程数:线程池创建时候初始化的线程数
        executor.setCorePoolSize(coreThreadCount);
        // 最大线程数:线程池最大的线程数,只有在缓冲队列满了之后才会申请超过核心线程数的线程
        executor.setMaxPoolSize(maxThreadCount);
        // 允许线程的空闲时间(秒):当超过了核心线程出之外的线程在空闲时间到达之后会被销毁
        executor.setKeepAliveSeconds(600);
        // 设置线程名称
        executor.setThreadNamePrefix("Screen-");
        // 设置拒绝策略
        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        // 等待所有任务结束后再关闭线程池
        executor.setWaitForTasksToCompleteOnShutdown(true);

        executor.initialize();
        return executor;
    }
}

异步使用

指需要在实现类加上@Async注解就可以了

    @Override
    @Async("screenTaskExecutor")
    public void insert(RequestLog requestLog) {
        this.requestLogMapper.insert(requestLog);
    }

posted @   张and强  阅读(1720)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示