当前位置: 首页 > news >正文

SpringBoot自定义线程池

1、定义线程池

线程池类:PushExecutorConfig

package com.xjj.task_management.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

import java.util.concurrent.ThreadPoolExecutor;

@Configuration
@EnableAsync
public class PushExecutorConfig {

    /**
     * 配置异步任务执行器
     * @return 返回一个ThreadPoolExecutor对象,用于异步任务的执行
     */
    private static final int corePoolSize = 8;       		// 核心线程数(默认线程数)
    private static final int maxPoolSize = 16;			    // 最大线程数
    private static final int keepAliveTime = 10;			// 允许线程空闲时间(单位:默认为秒)
    private static final int queueCapacity = 100;			// 缓冲队列数
    private static final String threadNamePrefix = "pushTaskExecutor-Service-"; // 线程池名前缀

    @Bean(name = "pushTaskExecutor")
    public ThreadPoolTaskExecutor getAsyncExecutor(){
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(corePoolSize);
        executor.setMaxPoolSize(maxPoolSize);
        executor.setQueueCapacity(queueCapacity);
        executor.setKeepAliveSeconds(keepAliveTime);
        ThreadPoolExecutor.CallerRunsPolicy refusalStrategy = new ThreadPoolExecutor.CallerRunsPolicy(); //拒绝策略
        executor.setRejectedExecutionHandler(refusalStrategy);
        executor.setThreadNamePrefix(threadNamePrefix);

        // 线程池对拒绝任务的处理策略(提交该任务的线程去处理该任务)
        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        // 初始化
        executor.initialize();
        return executor;
    }

}

2、使用

在对应的方法上引入即可,注意线程名称与Bean注入名称一致。

线程使用方法

相关文章:

  • 解决 React Native 0.76 中 com.facebook.react.settings 插件缺失问题
  • Ubuntu docker安装milvusdb
  • Matlab 四分之一车辆被动悬架和模糊pid控制对比
  • 网页制作17-Javascipt图像特效の鼠标经过图像震动
  • Axure原型设计新境界:ElementUI元件库与后台模板的高效融合
  • 【紫光同创FPGA开发常用工具】FPGACPLD的下载与固化
  • 3.16[A]FPGA
  • 如何利用 Zeabur 实现 OceanBase 的一键部署
  • 【儿童_认知地图的构建困境】
  • 开源PACS(dcm4che-arc-light)部署教程,源码方式
  • Java 设计模式之享元模式(Flyweight Pattern)
  • error:0308010C:digital envelope routines::unsupported
  • 推理大模型的后训练增强技术-Reasoning模型也进化到2.0了,这次居然学会用工具了
  • 基于Springboot+Typst的PDF生成方案,适用于报告打印/标签打印/二维码打印等
  • I2C 总线协议
  • 1.6 极限存在准则
  • python-数据结构汇总,树图、代码讲解(字符串、数组、字典、集合、元组)
  • JavaScript运算符与流程控制详解
  • 【每日学点HarmonyOS Next知识】上下拉列表、停止无限循环动画、页面列表跟随列表滑动、otf字体、日期选择
  • C语言修饰符汇总详解
  • 日本航空自卫队一架练习机在爱知县坠毁
  • 广东省中医院脾胃病科大科主任张北平病逝,年仅52岁
  • 外企聊营商|波音速度:创新审批促“起飞”
  • 美元指数上涨超1%重返101上方,创1个月新高
  • 言短意长|西湖大学首次“走出西湖”
  • 国家统计局今年将在全国开展两次人口固定样本跟访调查