当前位置: 首页 > 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注入名称一致。

线程使用方法

http://www.dtcms.com/a/73807.html

相关文章:

  • 解决 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语言修饰符汇总详解
  • 4.数据结构-树和二叉树
  • VLLM专题(二十六)—使用 Docker
  • 使用HTML+JavaScript生成一个贪吃蛇游戏-demo
  • 案例5_1:单位数码管显示0
  • ERC-6909 最小多代币标准
  • 2000-2023年各地级市二氧化碳排放量数据/地级市CO2排放量
  • 高数1.4 无穷小与无穷大
  • React-state响应式内部数据(类组件Hook两种方式整理)
  • Infura 简介
  • 英文LaTeX中左右引号怎么打