Spring线程池ThreadPoolTaskExecutor使用
为什么使用线程池?
- 降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;
- 提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行;
- 方便线程并发数的管控,因为线程若是无限制的创建,可能会导致内存占用过多而产生OOM,并且会造成cpu过度切换(cpu切换线程是有时间成本的(需要保持当前执行线程的现场,并恢复要执行线程的现场)
- 提供更强大的功能,延时定时线程池
参考博客:https://blog.csdn.net/u012060033/article/details/111934507
简单使用:
参考博客:https://blog.csdn.net/weixin_45866737/article/details/122539694
创建线程池
MyThreadPool .java
@Configuration
public class MyThreadPool {//ThreadPoolTaskExecutor不会自动创建ThreadPoolExecutor,需要手动调initialize才会创建。如果@Bean就不需手动,会自动InitializingBean的afterPropertiesSet来调initialize@Bean("myExecutor")public Executor createJobExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();// 线程池活跃的线程数executor.setCorePoolSize(20);// 设置线程队列最大线程数executor.setMaxPoolSize(40);// 设置等待队列大小executor.setQueueCapacity(200);// 线程池维护线程所允许的空闲时间executor.setKeepAliveSeconds(60);// 线程前缀名称executor.setThreadNamePrefix("myExecutor---: ");executor.initialize();return executor;}
}
service层
@Service
public class StudentServiceImpl implements StudentService {@Override@Async("myExecutor")public Future<StudentVo> toVo(Student student) {StudentVo studentVo = StudentMapStruct.INSTANCE.studentToVo(student);// 业务操作return new AsyncResult<>(studentVo);}
}
controller层:
@Api(tags = "学生实体类转vo接口")
@RestController
@RequestMapping(value = "/trans")
public class StudentController {@AutowiredStudentServiceImpl studentService;@ResponseBody@PostMapping("/students")@ApiOperation(value = "测试接口")public ResponseEntity<StudentResponse> testStudent(@ApiParam("学生请求对象实体类") @RequestBody Student student){Future<StudentVo> studentVo = studentService.toVo(student);while (studentVo.isDone()) {break;}StudentResponse studentResponse = StudentMapStruct.INSTANCE.voToResponse(studentVo.get());return new ResponseEntity(studentResponse, HttpStatus.OK);}
}
相关文章:
Spring线程池ThreadPoolTaskExecutor使用
为什么使用线程池? 降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行…...
spring mvc的执行流程
请求拦截。用户发起请求,请求先被sevlet拦截,转发给spring mvc框架请求转发。spring mvc里面的DispcherServlet会接收到请求并转发给HandlerMapping匹配接口。HandlerMapping负责解析请求,根据请求信息和配置信息找到匹配的controller类&…...
docker作业
目录 1、使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。 1.1启动镜像 1.2启动cloud镜像 1.3浏览器访问 编辑 2、安装搭建私有仓库 Harbor 2.1下载docker-compose 2.2 磁盘挂载,保存harbor 2.3 修改配置文件 2.4安装 2.5浏览器访问 2.6 新…...
java实现本地文件转文件流发送到前端
java实现本地文件转文件流发送到前端 Controller public void export(HttpServletResponse response) {// 创建file对象response.setContentType("application/octet-stream");// 文件名为 sresponse.setHeader("Content-Disposition", "attachment;…...
2020ICPC南京站
K K Co-prime Permutation 题意:给定n和k,让你构造n的排列,满足gcd(pi, i)1的个数为k。 思路:因为x和x-1互质,1和任何数互质,任何数和它本身不互质 当k为奇数时,p11,后面k-1个数…...
Linux 中的 chsh 命令及示例
介绍 bash shell 是 Linux 最流行的登录 shell 之一。但是,对于不同的命令行操作,可以使用替代方法。chshLinux 中的( change shell )命令使用户能够修改登录 shell 。 以下教程...
JavaScript 数组如何实现冒泡排序?
冒泡排序是一种简单但效率较低的排序算法,常用于对小型数据集进行排序。它的原理是多次遍历数组,比较相邻元素的大小,并根据需要交换它们的位置,将最大(或最小)的元素逐渐“冒泡”到数组的一端。这个过程会…...
ZooKeeper集群环境搭建
🥇🥇【大数据学习记录篇】-持续更新中~🥇🥇 个人主页:beixi 本文章收录于专栏(点击传送):【大数据学习】 💓💓持续更新中,感谢各位前辈朋友们支持…...
【跟小嘉学 Rust 编程】二十、进阶扩展
系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…...
pytorch学习过程中一些基础语法
1、tensor.view()函数,通俗理解就是reshape,#参数这里的-1需要注意,可以根据原张量size自行计算 data1torch.randn((4,2)) data2data1.view(2,4) data3data2.view(-1,8)2、tensor.max()函数,在分类问题中,通常需要使用…...
判断聚类 n_clusters
目录 基本原理 代码实现: 肘部法则(Elbow Method): 轮廓系数(Silhouette Coefficient) Gap Statistic(间隙统计量): Calinski-Harabasz Index(Calinski-…...
基于深度学习的网络异常检测方法研究
摘要: 本文提出了一种基于深度学习的网络异常检测方法,旨在有效地识别网络中潜在的异常行为。通过利用深度学习算法,结合大规模网络流量数据的训练,我们实现了对复杂网络环境下的异常行为的准确检测与分类。实验结果表明…...
SSM 基于注解的整合实现
一、pom.xml <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelV…...
工具类APP如何解决黏性差、停留短、打开率低等痛点?
工具产品除了需要把自己的功能做到极致之外,其实需要借助一些情感手段、增设一些游戏机制、输出高质量内容、搭建社区组建用户关系链等方式,来提高产品的用户黏性,衍生产品的价值链。 工具类产品由于进入门槛低,竞争尤为激烈&…...
使用Java MVC开发高效、可扩展的Web应用
在当今的Web开发领域,高效和可扩展性是我们追求的目标。Java作为一种强大且广泛使用的编程语言,提供了丰富的工具和框架来支持Web应用的开发。其中,MVC模式是一种被广泛采用的架构模式,它能够有效地组织和管理代码,使得…...
wandb安装方法及本地部署教程
文章目录 1 wandb介绍2 wandb安装2.1 注册wandb账号2.2 创建项目并获得密钥2.3 安装wandb并登录 3 wandb本地部署3.1 设置wandb运行模式3.2 云端查看运行数据 4 总结 1 wandb介绍 Wandb(Weights & Biases)是一个用于跟踪、可视化和协作机器学习实验…...
stable diffusion实践操作-提示词插件安装与使用
本文专门开一节写提示词相关的内容,在看之前,可以同步关注: stable diffusion实践操作 正文 1、提示词插件安装 1.1、 安装 1.2 加载【应用更改并重载前端】 1.3 界面展示 1.3.-4 使用 里面有个收藏列表,可以收藏以前的所有提示…...
【SpringBoot】详细介绍SpringBoot中的bean
在Spring Boot中,Bean是由Spring容器实例化、管理和维护的对象。Bean是Spring框架的核心概念之一,它代表了应用程序中的组件或对象。 以下是有关Spring Boot中Bean的详细介绍: 1. 定义:Bean是在Spring容器中被实例化、管理和维护…...
【Nuxt实战】在Nuxt3项目中如何按需引入Element-plus
步骤一:安装 Element Plus 和图标库 首先,使用以下命令安装 Element Plus 和它的图标库: npm install element-plus --save npm install element-plus/icons-vue步骤二:安装 Nuxt Element Plus 模块 安装 Nuxt Element Plus 模…...
专业制造一体化ERP系统,专注于制造工厂生产管理信息化,可定制-亿发
制造业是国民经济的支柱产业,对于经济发展和竞争力至关重要。在数字化和智能化趋势的推动下,制造业正处于升级的关键时期。而ERP系统,即企业资源计划系统,能够将企业的各个业务环节整合起来,实现资源的有效管理和信息的…...
macOS安装OpenClaw全流程:Qwen2.5-VL-7B图文模型调试技巧
macOS安装OpenClaw全流程:Qwen2.5-VL-7B图文模型调试技巧 1. 为什么选择OpenClawQwen2.5-VL组合 去年冬天第一次接触OpenClaw时,我正被重复性的截图标注工作折磨得焦头烂额。当时尝试过几个自动化工具,要么功能太局限,要么需要把…...
KDD_CUP99数据集预处理与模型性能验证(附处理代码与数据集)
1. KDD_CUP99数据集入门指南 第一次接触KDD_CUP99数据集时,我也被它庞大的数据量和复杂的特征结构吓了一跳。这个数据集是网络安全领域最经典的入侵检测基准数据集之一,包含了模拟军事网络环境中各种攻击类型的网络连接记录。原始数据集有近500万条记录&…...
SAP 生产订单批量创建与下达实战:基于 BAPI_PRODORD_CREATE 的自动化方案
1. 为什么需要批量创建生产订单? 在制造业的实际业务场景中,生产计划部门经常需要根据销售订单、预测数据或库存情况,一次性生成大量生产订单。想象一下,一个汽车零部件工厂每月要处理上千个零部件的生产计划,如果每个…...
手把手教你用STM32F103C8T6+DHT11做个智能加湿器(附完整代码和PCB文件)
从零打造智能加湿器:STM32F103C8T6与DHT11的完美组合 在干燥的秋冬季节,一台能够自动调节湿度的智能加湿器不仅能提升生活舒适度,更是电子爱好者展示技能的绝佳项目。本文将带你从元器件选型开始,逐步完成一个基于STM32F103C8T6单…...
OpenClaw+Qwen2.5-VL-7B省钱方案:自建多模态接口替代GPT-4V
OpenClawQwen2.5-VL-7B省钱方案:自建多模态接口替代GPT-4V 1. 为什么选择本地多模态方案 去年我在开发一个智能内容管理工具时,频繁调用GPT-4V处理截图和文档解析,每月账单轻松突破2000元。最痛心的是,80%的简单图片识别任务其实…...
硅橡胶资源平台对接的靠谱对接企业哪家强
在深圳这座创新与制造之都,硅橡胶产业上下游企业林立,从原材料、模具设计到制品生产,形成了一个庞大而复杂的产业链。对于许多企业而言,“深圳硅橡胶资源平台对接” 的需求日益迫切——无论是寻找稳定供应商、开拓新客户ÿ…...
FastAPI系列 4 - 模块化路由的艺术:APIRouter实战指南
1. 为什么需要模块化路由? 第一次用FastAPI开发电商后台时,我把所有路由都堆在main.py里。三个月后这个文件膨胀到2000多行代码,每次修改用户认证逻辑都要在订单处理和商品列表的代码块之间来回翻找。这种经历让我深刻理解了为什么APIRouter会…...
TP4056充电板实战避坑指南:从LED状态误判到TEMP脚悬空,新手最容易踩的5个坑
TP4056充电板实战避坑指南:从LED状态误判到TEMP脚悬空,新手最容易踩的5个坑 第一次使用TP4056充电板时,我盯着闪烁的LED灯陷入了困惑——为什么充满电后红灯还亮着?为什么电池发热异常?这些问题让我意识到,…...
忍者像素绘卷效果对比:亮色像素美学 vs 传统暗调像素艺术表现力
忍者像素绘卷效果对比:亮色像素美学 vs 传统暗调像素艺术表现力 1. 作品概述 忍者像素绘卷是一款基于Z-Image-Turbo深度优化的图像生成工作站,它将忍者文化与16-Bit复古游戏美学完美融合。这款工具最显著的特点是采用了全新的"亮色像素"界面…...
BiliTools:B站资源高效管理与下载完全指南
BiliTools:B站资源高效管理与下载完全指南 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools BiliTools是一…...
