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


}

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

之后就能在配置文件配置

3.配置文件

hacah:
  thread:
    core-pool-size: 10
    max-pool-size: 200
    keepAliveTime: 10000

4.使用

Spring依赖注入方式

你可能感兴趣的:(操作技巧,spring,boot,java,spring,线程池)