ThreadPoolTaskExecutor @Async调用方法

ThreadPoolTaskExecutor @Async调用方法

@Configuration
public class ThreadPoolConfig
{
    // 核心线程池大小
    private int corePoolSize = 50;

    // 最大可创建的线程数
    private int maxPoolSize = 200;

    // 队列最大长度
    private int queueCapacity = 1000;

    // 线程池维护线程所允许的空闲时间
    private int keepAliveSeconds = 300;

    @Bean(name = "threadPoolTaskExecutor")
    public ThreadPoolTaskExecutor threadPoolTaskExecutor()
    {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setMaxPoolSize(maxPoolSize);
        executor.setCorePoolSize(corePoolSize);
        executor.setQueueCapacity(queueCapacity);
        executor.setKeepAliveSeconds(keepAliveSeconds);
        // 线程池对拒绝任务(无线程可用)的处理策略
        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        return executor;
    }
}

调用

/**
     * 异步创建表并且从文件导入数据
     * @param vo
     */
    @Async(value = "threadPoolTaskExecutor")
    public void createFileData(FileDatasourceVo vo){
        log.info("进入异步创建表.....start........");
        ....
    }

 

 备注:一定要在启动类上添加 @EnableAsync 注解,这样 @Async 注解才会生效。
 
posted on 2022-08-11 17:41  大山008  阅读(184)  评论(0)    收藏  举报