【业务功能篇 143】Spring容器中的ThreadPoolTaskExecutor多线程,LinkedBlockingQueue问题

 
 
package com.config;
 
import lombok.extern.slf4j.Slf4j;
 
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 
import java.util.concurrent.ThreadPoolExecutor;
 
/**
 * 线程池配置
 *
 */
@Slf4j
@Configuration
@EnableAsync
public class ThreadConfigurer implements AsyncConfigurer {
 
 
    /**
     * taskExecutor
     * 
     * @return ThreadPoolTaskExecutor
     */
    @Primary
    @Bean
    public ThreadPoolTaskExecutor taskExecutor() {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
 
        //获取电脑的处理器数量,一般电脑一个处理器有两个逻辑线程
        int num = Runtime.getRuntime().availableProcessors();
        // 核心线程数目 核心线程数最好设置为电脑的逻辑线程总数 + 1,达到最大化利用处理器
        executor.setCorePoolSize(num * 2 + 1);
        // 指定最大线程数
        executor.setMaxPoolSize(200);
        // 队列中最大的数目
        executor.setQueueCapacity(100);
        // 线程名称前缀
        executor.setThreadNamePrefix("taskExecutor-");
        // 拒绝策略:不在新线程中执行任务,而是由调用者所在的线程来执行
        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        // 当调度器shutdown被调用时等待当前被调度的任务完成
        executor.setWaitForTasksToCompleteOnShutdown(true);
        // 线程空闲后的最大存活时间
        executor.setKeepAliveSeconds(60);
        // 线程池初始化
        executor.initialize();
        return executor;
    }
}

 

【业务功能篇42】ThreadPoolTaskExecutor多线程处理耗时较高的数据接口-CSDN博客

 

Spring容器中的ThreadPoolTaskExecutor是否需要手动关闭_threadpoolexecutor需要手动关闭吗-CSDN博客

多线程系列:二、线程池在 Spring 中的使用与关闭_springbatch split 线程池-CSDN博客 

多线程系列:附、LinkedBlockingQueue 引发的一次线上事故_linkedblockingqueue thread乱了-CSDN博客

相关推荐

  1. springBoot使用threadPoolTaskExecutor线

    2024-03-15 06:00:03       57 阅读
  2. Spring中线ThreadPoolTaskExecutor使用

    2024-03-15 06:00:03       54 阅读
  3. spring boot常用线案例

    2024-03-15 06:00:03       27 阅读
  4. springboot线问题优化和处理

    2024-03-15 06:00:03       32 阅读
  5. Springboot自定义线ThreadPoolTaskExecutor

    2024-03-15 06:00:03       57 阅读
  6. Spring Bean线安全问题

    2024-03-15 06:00:03       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-15 06:00:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-15 06:00:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-15 06:00:03       82 阅读
  4. Python语言-面向对象

    2024-03-15 06:00:03       91 阅读

热门阅读

  1. element-ui的tree组件获取父级节点渲染面包屑

    2024-03-15 06:00:03       40 阅读
  2. 音视频实战---从音视频文件中提取h264裸流

    2024-03-15 06:00:03       42 阅读
  3. CMake 脚本命令(Scripting Commands)之find_package

    2024-03-15 06:00:03       46 阅读
  4. 谈谈对chatgpt的看法

    2024-03-15 06:00:03       40 阅读
  5. ChatGPT的核心技术

    2024-03-15 06:00:03       49 阅读
  6. 导出pdf

    导出pdf

    2024-03-15 06:00:03      32 阅读
  7. 华为OD应聘感受

    2024-03-15 06:00:03       90 阅读
  8. Rust镜像配置

    2024-03-15 06:00:03       46 阅读
  9. 使用Excel导入和导出数据

    2024-03-15 06:00:03       43 阅读
  10. [Django 0-1] Core.Files

    2024-03-15 06:00:03       45 阅读
  11. Redis-Sentinel哨兵

    2024-03-15 06:00:03       35 阅读