• SpringBoot项目中使用线程池


    SpringBoot项目中使用线程池

    在SpringBoot环境使用线程池并可配置

    1.Config配置类

    package com.atguigu.gulimall.product.config;
    
    import org.apache.tomcat.util.threads.ThreadPoolExecutor;
    import org.springframework.boot.context.properties.EnableConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import java.util.concurrent.Executors;
    import java.util.concurrent.LinkedBlockingDeque;
    import java.util.concurrent.TimeUnit;
    
    /**
     *
     * 线程池配置
     * @author Hacah
     * @date 2022/12/2 22:01
     */
    @EnableConfigurationProperties(value = ThreadPoolConfigurationProperties.class)
    @Configuration
    public class ThreadPoolConfig {
    
        @Bean
        public ThreadPoolExecutor threadPool(ThreadPoolConfigurationProperties configurationProperties) {
        /**
             * 线程池配置的七大参数
             */
            return new ThreadPoolExecutor(configurationProperties.getCorePoolSize(), configurationProperties.getMaxPoolSize(),
                    configurationProperties.getKeepAliveTime(), TimeUnit.MILLISECONDS, new LinkedBlockingDeque<>(100000),
                    Executors.defaultThreadFactory(), new java.util.concurrent.ThreadPoolExecutor.AbortPolicy());
        }
    
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    corePoolSize

    代表核心的线程大小。也就是正常保持的线程数,不会删除,除非设置了 allowCoreThreadTimeOut。

    maximumPoolSize

    线程池允许最大线程数(线程数量最多到 2 的 29 次方 -1)

    keepAliveTime

    超过核心线程部分的线程,空闲时最大的存活时间。最终线程池维持在 corePoolSize 大小

    unit

    上一个参数的单位

    workQueue

    用来存储执行的任务,可使用LinkedBlockingQueue

    threadFactory

    线程创建的工厂。控制线程创建的规则参数线程名、组、优先级等,可以使用DefaultThreadFactory

    handler

    超过最大线程数后,线程满了。对线程的处理策略。可使用AbortPolicy,拒接任务并抛出异常。

    2.属性配置类

    package com.atguigu.gulimall.product.config;
    
    import lombok.Data;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    
    /**
     * 线程池配置
     * @author Hacah
     * @date 2022/12/2 22:03
     */
    @Data
    @ConfigurationProperties(prefix = "hacah.thread")
    public class ThreadPoolConfigurationProperties {
        /**
         * 核心大小
         */
        private Integer corePoolSize;
        /**
         * 最大量
         */
        private Integer maxPoolSize;
        /**
         * 时间,毫秒
         */
        private Long keepAliveTime;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    之后就能在配置文件配置

    3.配置文件

    hacah:
      thread:
        core-pool-size: 10
        max-pool-size: 200
        keepAliveTime: 10000
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4.使用

    Spring依赖注入方式

  • 相关阅读:
    SRC中逻辑漏洞检查总结
    JS的基本内容
    网络I/O_04 IO模型
    自动化工具Selenium IDE基本使用——脚本编辑
    HONEYWELL 0574-A-012 0574-A-0131 编码器模块
    16万亿Web3蓝图落地新加坡
    [软考中级]软件设计师-计算机网络
    基于Laravel 5.6的运动健身类小程序前后端源码
    Redis的坑
    R语言—向量
  • 原文地址:https://blog.csdn.net/hwh295/article/details/128155601