线程池实践篇

文章目录

  • 配置线程池参数
  • 定义参数实体bean
  • 配置线程池
  • 使用


在这里插入图片描述

配置线程池参数

定时任务线程池基础参数

# 定时任务线程池基础参数
task:pool:corePoolSize: 5 # 核心线程数maxPoolSize: 20 # 设置最大线程数keepAliveSeconds: 300 # 设置线程活跃时间,单位秒queueCapacity: 100 # 设置队列容量

定义参数实体bean

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;/*** @author snow* @Date 2024/4/8* @Description*/
@ConfigurationProperties(prefix = "task.pool")
@Data
public class TaskThreadPoolInfo {// 核心线程池大小,即保持活动状态的最小线程数private Integer corePoolSize;// 最大线程池大小,即线程池允许创建的最大线程数private Integer maxPoolSize;// 非核心线程空闲时的存活时间,超过此时间,空闲线程将被终止private Integer keepAliveSeconds;// 阻塞队列容量,用于存放等待执行的任务private Integer queueCapacity;
}

配置线程池

在配置类中配置:

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadPoolExecutor;/*** @author snow* @Date 2024/4/8* @Description*/
@Configuration
@EnableConfigurationProperties(TaskThreadPoolInfo.class)
@Slf4j
public class TaskExecutePool {private TaskThreadPoolInfo info;public TaskExecutePool(TaskThreadPoolInfo info) {this.info = info;}/*** 定义任务执行器* @return*/@Bean(name = "threadPoolTaskExecutor",destroyMethod = "shutdown")public ThreadPoolTaskExecutor threadPoolTaskExecutor(){//构建线程池对象ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();//核心线程数:核心线程数(获取硬件):线程池创建时候初始化的线程数taskExecutor.setCorePoolSize(info.getCorePoolSize());//最大线程数:只有在缓冲队列满了之后才会申请超过核心线程数的线程taskExecutor.setMaxPoolSize(info.getMaxPoolSize());//缓冲队列:用来缓冲执行任务的队列taskExecutor.setQueueCapacity(info.getQueueCapacity());//允许线程的空闲时间:当超过了核心线程出之外的线程在空闲时间到达之后会被销毁taskExecutor.setKeepAliveSeconds(info.getKeepAliveSeconds());//线程名称前缀taskExecutor.setThreadNamePrefix("XXXX-");//设置拒绝策略// taskExecutor.setRejectedExecutionHandler(rejectedExecutionHandler());//参数初始化taskExecutor.initialize();return taskExecutor;}/*** 自定义线程拒绝策略* @return*//**@Beanpublic RejectedExecutionHandler rejectedExecutionHandler(){RejectedExecutionHandler errorHandler = new RejectedExecutionHandler() {@Overridepublic void rejectedExecution(Runnable runnable, ThreadPoolExecutor executor) {//TODO 可自定义Runable实现类,传入参数,做到不同任务,不同处理log.info("股票任务出现异常:发送邮件");}};return errorHandler;} */
}

使用

注入线程池bean:

    /*** 注入线程池对象*/@Autowiredprivate ThreadPoolTaskExecutor threadPoolTaskExecutor;//要求:将集合分组,每组的集合长度为20Lists.partition(ids, 20).forEach(ids->{//每个分片的数据开启一个线程异步执行任务threadPoolTaskExecutor.execute(()->{//解析数据List<PO> list = XXX;//XXmapper.insertBatch(list);});});

在这里插入图片描述



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/801710.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Go-Ora 连接到 Oracle 数据库

前文 《 一鍵啓動 Oracle 23c Free 》 介绍了如何使用容器技术快速拉起 Oracle 23c 数据库。 这个开发者版本可以很便捷的拉起、测试、销毁&#xff0c;对开发者是非常友好的。 本文将介绍如何使用 Go 语言构建项目&#xff0c;并连接到 Oracle 数据库。 Go 环境配置 本文使用的…

如何将本地websocket服务端从本地暴露至公网实现客户端远程连接

文章目录 1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功,暴露端口默认99995. 创建隧道映射内网端口6. 查看状态->在线隧道,复制所创建隧道的公网地址加端口号7. 以…

Rust语言入门第一篇-环境搭建

Rust语言入门第一篇 Rust官网 一&#xff0c;环境搭建 1、C开发环境配置 Rust 语言的底层是依赖于 C/C 编译器的。在安装 Rust 编译器时&#xff0c;通常会自动安装所需的 C/C 编译环境&#xff0c;以便 Rust 能够生成可执行文件或库。因此&#xff0c;在安装 Rust 之前&…

Docker之数据卷和Dockerfile

目录 一、Docker数据管理 二、数据卷 创建数据卷 查看数据卷 删除数据卷 挂载数据卷 三、数据卷容器 创建数据卷容器 测试数据卷容器 备份数据卷容器 还原数据卷容器 四、Dockerfile 什么是Dockerfile 基本结构 常用指令 快速入门 编写Dockerfile文件 构建镜…

安全升级,智能领航:RFID技术推动铁路锁控系统进入新时代

随着我国铁路运输行业的快速发展&#xff0c;铁路安全运营的重要性日益凸显&#xff0c;为了提高铁路运输安全性&#xff0c;降低人为操作失误&#xff0c;航连科技提出了一种基于RFID技术的铁路智能锁控系统解决方案&#xff0c;旨在为我国铁路安全运营提供有力支持。 一、系统…

C++:VS dump调试(2)

之前写的&#xff1a; C&#xff1a;VS2019调试dump文件-CSDN博客 1、需要dump文件【这个一般是客户现场收集的】 2、对应的pdb文件【这个是软件编译时候生成的】 3、代码【有可能只有自己负责模块的代码&#xff0c;没有全部代码&#xff0c;但是基本调试也是只会用到自己部…

IP协议中的四大支柱:DHCP、NAT、ICMP和IGMP的功能剖析

DHCP动态获取 IP 地址 我们的电脑通常都是通过 DHCP 动态获取 IP 地址&#xff0c;大大省去了配 IP 信息繁琐的过程。 客户端首先发起 DHCP 发现报文&#xff08;DHCP DISCOVER&#xff09; 的 IP 数据报&#xff0c;由于客户端没有 IP 地址&#xff0c;也不知道 DHCP 服务器的…

FPGA:图像数字细节增强算法(工程+仿真+实物,可用毕设)

目录 日常唠嗑一、视频效果二、硬件及功能1、硬件选择2、功能3、特点 未完、待续……四、工程设计五、板级验证六、工程获取 日常唠嗑 有2个多月没写文章了&#xff0c;又是老借口&#xff1a;“最近实在是很忙”&#x1f923;&#xff0c;不过说真&#xff0c;确实是比较忙&am…

DIY可视化UniApp表格组件

表格组件在移动端的用处非常广泛&#xff0c;特别是在那些需要展示结构化数据、进行比较分析或提供详细信息的场景中。数据展示与整理&#xff1a;表格是展示结构化数据的理想方式&#xff0c;特别是在需要展示多列和多行数据时。通过表格&#xff0c;用户可以轻松浏览和理解数…

java数据结构与算法刷题-----LeetCode238. 除自身以外数组的乘积

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 动态规划&#xff1a;左右乘积列表2. 滚动数组对动态规划过程…

老子云、AMRT3D、眸瑞科技

老子云概述 老子云3D可视化快速开发平台&#xff0c;集云压缩、云烘焙、云存储云展示于一体&#xff0c;使3D模型资源自动输出至移动端PC端、Web端&#xff0c;能在多设备、全平台进行展示和交互&#xff0c;是全球领先、自主可控的自动化3D云引擎。 平台架构 平台特性 1、基…

Open CASCADE学习|统计形状拓扑数量

边界表示法&#xff08;Boundary Representation&#xff0c;简称B-Rep&#xff09;是几何造型中最成熟、无二义的表示法。它主要用于描述物体的几何信息和拓扑信息。在边界表示法中&#xff0c;一个实体&#xff08;Solid&#xff09;由一组封闭的面&#xff08;Face&#xff…

easyExcel - 按模板导出

目录 前言一、情景介绍二、文档介绍2.1 读取模板2.2 填充模板 三、代码示例3.1 案例一&#xff1a;工资表3.2 案例二&#xff1a;报价单 四、我所遇到的问题 前言 Java-easyExcel入门教程&#xff1a;https://blog.csdn.net/xhmico/article/details/134714025 之前有介绍过如…

VSCode配置AI自动补全插件Tabnine

面向软件开发人员的 AI 助手 使用 AI 代码完成更快地编写代码 什么是Tabnine Tabnine 是一款 AI 代码助手&#xff0c;可让您成为更好的开发人员。Tabnine 将通过所有最流行的编码语言和 IDE 的实时代码完成、聊天和代码生成来提高您的开发速度。 无论您将其称为 IntelliSens…

一文读懂CSS中的阴影:box-shadow,text-shadow,drop-shadow的区别与使用方式

一、区别 box-shadow 应用于元素&#xff0c;为元素本身添加阴影效果。 text-shadow 应用于文本&#xff0c;为文本内容添加阴影效果。 drop-shadow 是filter属性的一部分&#xff0c;通常用于图像&#xff0c;为其添加阴影效果。 二、box-shadow box-shadow属性用于为元素&…

无线局域网安全协议-WEP,WPA,WAPI,

目录 一、WEP&#xff08;有线等效保密&#xff09; 二、WPA&#xff08;Wi-Fi网络安全接入&#xff09; ​编辑 三、WAPI&#xff08;无线局域网鉴别和保密基础结构&#xff09; WLAN&#xff08;Wireless Local Area Network&#xff09;指应用无线通信技术将计算机设备互…

C语言程序的编译与链接

目录 1.翻译环境和运行环境2.翻译环境2.1 预处理&#xff08;预编译&#xff09;2.2 编译2.3 汇编2.4 链接 3.运行环境 1.翻译环境和运行环境 在ANSI C的任何一种实现中&#xff0c;存在两个不同的环境。 翻译环境&#xff1a;在这个环境中源代码被转换为可执⾏的机器指令&am…

每日OJ题_两个数组dp⑤_力扣10. 正则表达式匹配

目录 力扣10. 正则表达式匹配 解析代码 力扣10. 正则表达式匹配 10. 正则表达式匹配 难度 困难 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c…

springboot 整合 mybatis(配置版)

代码及配置整合 创建实体类,与数据库对应 创建 mapper、service 和 controller @AutowiredUserService userService;@ResponseBody@GetMapping("/user")public com.vazquez.bootstudy.model.User getById(@RequestParam("id") Long id) {return userServ…

XC7A35T-2FGG484 嵌入式FPGA现场可编程门阵列 Xilinx

XC7A35T-2FGG484 是一款由Xilinx&#xff08;赛灵思&#xff09;制造的FPGA&#xff08;现场可编程门阵列&#xff09;芯片 以下是XC7A35T-2FGG484 的主要参数&#xff1a; 1. 系列&#xff1a;Artix-7 2. 逻辑单元数量&#xff1a;33280个 3. 工艺技术&#xff1a;28nm 4. …