1. 程式人生 > 其它 >springboot執行緒池配置

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;
    }
}