springboot中@Aysnc的线程池设置

别来无恙 提交于 2019-11-29 04:54:38

1、添加AsyncConfig配置类,设置线程池信息

@Configuration
@EnableAsync
public class AsyncConfig implements AsyncConfigurer {

    public static final Logger logger = LoggerFactory.getLogger(AsyncConfig.class);


    /**
     *  线程数量未达到corePoolSize,则新建一个线程(核心线程)执行任务
     *  线程数量达到了corePools,则将任务移入队列等待
     *  队列已满,新建线程(非核心线程)执行任务
     *  队列已满,总线程数又达到了maximumPoolSize,就会抛出异常
     *
     * @param
     * @Return: java.util.concurrent.Executor
     * @Author: niuqingsong
     * @Date: 2019/9/3
     */
    @Override
    public Executor getAsyncExecutor() {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        /*核心线程数,如果当前运行的线程数小于corePoolSize,那么就创建线程来执行任务*/
        executor.setCorePoolSize(10);
        /*最大线程数*/
        executor.setMaxPoolSize(30);
        /*队列大小*/
        executor.setQueueCapacity(8);
        executor.initialize();
        executor.setThreadNamePrefix("AsyncThread-");
        logger.info("init async thread pool");
        return executor;
    }

    @Override
    public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
        return null;
    }
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!