你知道线程池创建多少线程比较合理吗?

【踩坑笔记】--论如何合理的使用线程池 如果说如何提升系统的并发能力,大家第一想到的肯定是采用多线程,而提到多线程编程,就不得不说到线程池,合理的使用线程池可以帮助我们大大提升系统的性能,但前提是“合理”两字,如果乱用/滥用线程池,带来的可能不是高性能而是灾难了。最近在一个需求当中,因为涉及到多方调用,自然而然的想到了使用线程池来提升性能,但由于线程池数量设置的不合理,导致在系统负载很低的情况下出现了线程阻塞的问题,不但没有提高接口的性能,反而让接口被线程池拖挂了。问题发生后,针对这一问题做了复盘,趁此机会也对线程池的原理和使用做了一番探究。.. 阅读详情

点击上方“芋道源码”,选择“设为星标”

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 8:55 更新文章,每天掉亿点点头发...

源码精品专栏

 

来源:cnblogs.com/karlMa/p/11356041.html

  • 为什么会使用多线程

  • 创建多少线程比较合适

  • 结束语

在设置线程池线程个数的时候,经常会想到这个问题,是不是设置的线程数越多越好?理解这个问题之前我们要先清楚的知道我们为什么使用多线程。

为什么会使用多线程

使用多线程的主要目的我们应该能够回答的出来就是提高程序的性能,这个提高性能其实是指,降低延迟指发送请求到接收到数据的时间,和提搞破:单位时间能可以处理更多的请求。

优化算法降低时间和空间复杂度,使程序执行时间更短。硬件的性能发挥到极致,具体的指提高I / O和cpu的利用率,如何提高I / O和cpu的利用率:如果单核系统中只有一个程序执行又有IO操作和Cpu计算的代码,当程序执行IO操作的时候。极致?

创建多少线程比较合适

经过上面的分析,我们知道创造了多少线程能够将硬件的最大化达到最高才是最好的线程数。

我们从线程的应用场景来分析,由于IO操作比Cpu计算耗时要久的多的,如果我们一段程序有IO操作和Cpu计算,我们可以调用IO密集型计算。程序中没有IO操作只有Cpu的话称为Cpu密集型程序。

  • IO密集计算,如何将硬件利用率达到极致呢我们将R = IO耗时/ Cpu耗时我们从上面的例子来看,如果IO耗时/ Cpu耗时= 10(我们平常可以用工具apm来统计这个比例),创建线程A执行io操作,我们希望IO操作的时候Cpu不能闲着,所以就应该创建10个线程去执行Cpu计算,当Io操作完成后刚好Cpu也执行完毕,他们的节省都是百分之一百在执行这段代码的时候。这个例子我们要创造1 + 10 = 11个线程执行起来效率更高,于是我们就得到了公式:1 + I / O耗时/ Cpu耗时,如果是多核Cpu最佳线程数= CPU核数* [1 +(I / O耗时/ Cpu耗时)。

  • Cpu密集型,这个就很简单了,Cpu的核数=线程数就行,一般我们会设置Cpu核数+ 1,防止由于其他因素导致螺纹等。

结束语

看到这里想必大家在回答创建多个线程比较合理的问题有了新的思路,希望能够帮助各位小伙伴!



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:

已在知识星球更新源码解析如下:

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 20 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

兄弟,艿一口,点个赞!????

面试问我,创建多少个线程合适?我该怎么说 | 如果好看,请给个赞 你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it well enough 现陆续将Demo代码和技术文章整理在一起 Github实践精选 ,方便大家阅读查看,本文同样收录在此,觉得不错,还请Star 为什么要使用多线程? 防止并发编... 阅读详情

相关推荐

在线程池中创建多少线程比较合理?

在设置线程池线程个数的时候,经常会想到这个问题,是不是设置的线程数越多越好?理解这个问题之前我们要先清楚的知道我们为什么使用多线程。 为什么会使用多线程 使用多线程的主要目的我们应该都能回答的出来就是提高程序的性能,这个提高性能其实是指 降低延迟 (发送请求到接收到数据的时间)和 提高吞吐量 (单位时间能可以处理更多的请求)。 降低延迟和提高吞吐量对应的方法有两种: 优化算法 和 将机器的硬件性能发挥到极致  优化算法:降低时间和空间复杂度,使得程序执行时间更短。  将硬件的性能发挥到极致,具体的指提高I/O 和cpu的利用率 如何提高I/O 和cpu的利用率的举例: 如果单核系统中 只有

计算IO设备、CPU利用率

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 计算IO设备、CPU利用率一、题目二、解题步骤0.分析:1.图解: 一、题目 在一个单CPU的处理机中,有P1,P3,P5三个作业,有两个IO设备IO1,IO2,并且能够实现抢先式多任务并行工作的多道程序环境中,投入运行优先级由高到低P5,P1,P3三个作业,他们使用设备的先后顺序和占用设备的时间分别为: P1:IO2(10ms) CPU(10ms) IO1(30ms)CPU(10ms); P3:IO1(30ms) CPU(10ms)..

weixin_48518371的博客 7482

FineReport V11.0安装避坑指南:从下载到激活的完整流程(附百度网盘链接)

本文提供FineReport V11.0从下载、安装到激活的完整避坑指南。详细解析了部署前的环境准备、安装过程中的JVM内存等核心配置、激活流程以及安装后的优化与常见问题排查,旨在帮助用户一次部署成功,确保企业级报表平台的稳定运行。

echo99的专栏 1197

【项目实战】—— 我们应该如何正确得创建线程池?

spring项目实践中,如何正确选择与创建线程池?

初学者乐园的博客 1941

STM32F4系列HAL库配置定时器实验——输入捕获

STM32F4系列HAL库配置定时器实验——输入捕获 输入捕获简单讲解 输入捕获模式可以用来测量脉冲宽度或者测量频率。我们以测量周期和频率为例,用一个简图来说明输入捕获的原理 假定定时器工作在向上计数模式, 图中 t1~t2 时间,就是我们需要测量的高电平时间。测量方法如下:首先设置定时器通道 x 为 上升沿捕获,这样,t1 时刻,就会捕获到当前的 CNT 值,然后立即清零 CNT,并设置通道 x为下降沿捕获,这样到 t2 时刻,又会发生捕获事件,得到此时的 CNT 值,记为 CCRx2。这样,根据定时器

azs0504的博客 9287

OpenClaw 开机自启配置:Windows/macOS/Linux 全平台技术指南

OpenClaw 开机自启全平台配置指南 本文提供了在Windows、macOS和Linux系统上配置OpenClaw开机自启的完整技术方案。主要内容包括: Windows配置:提供三种方法(Windows服务、任务计划程序、启动文件夹),详细说明服务脚本创建、服务注册和测试流程 macOS配置:使用LaunchAgent实现开机自启,包含配置文件创建和加载方法 Linux配置:通过systemd服务实现,包括服务单元文件创建和启用步骤 系统要求:明确硬件(64位CPU/4GB内存)和软件(各平台操作系统版

一键难忘的博客 2995

性能优化之趣谈线程池:线程开的越多就越好吗?

线程优化一直是启动优化中的一个必不可少的项目。作为一个 Android 程序员,你肯定希望应用启动的时候,火力全开,线程池拉满,每一个 CPU 核心满载而行。

m0_64420071的博客 2244

Linux加密框架中的算法和算法模式(1)——算法介绍

算法和算法模式

yangguoyu8023的博客 2033

burp爆破线程设置多少_你知道线程池 创建多少线程比较合理?

作者:小鱼儿_karl 在设置线程池线程个数的时候,经常会想到这个问题,是不是设置的线程数越多越好?理解这个问题之前我们要先清楚的知道我们为什么使用多线程。为什么会使用多线程使用多线程的主要目的我们应该都能回答的出来就是提高程序的性能,这个提高性能其实是指 降低延迟 (发送请求到接收到数据的时间)和 提高吞吐量 (单位时间能可以处理更多的请求)。降低延迟和提高吞吐量对应的方法有两种: 优化算法 和...

weixin_39847732的博客 471

RK3588 部署 ArcFace(r100)人脸识别模型:ONNX 转 RKNN 全流程详解

本文介绍了将ArcFace人脸识别模型转换为RKNN格式并部署到RK3588 NPU的方法。ArcFace是主流的人脸特征提取模型,适用于1:1比对和1:N检索等场景。文章详细说明了模型特点(输入112x112 RGB图像,输出512维特征向量)及转换步骤:首先使用torch2onnx将PyTorch模型转为ONNX格式,再通过RKNN工具进行量化转换。提供了完整的Python转换代码,包括预处理配置、模型加载、构建和导出过程。该方法能有效提升边缘设备上的人脸识别实时性,适用于门禁、考勤等应用场景。

J。 421

第1课:开篇扫盲——OpenClaw是什么?能帮你解决什么问题?(入门必看)

核心目标:学会安装、卸载、管理OpenClaw技能,自定义AI代理的性格与权限,让AI贴合自己的使用习惯。核心内容技能市场详解:ClawHub市场核心技能分类(办公、学习、开发、生活),热门技能推荐(web-search、文件处理、邮件管理)[superscript:3][superscript:4]。技能安装与卸载:终端命令实操(openclaw skill install/uninstall),技能更新与版本管理[superscript:3]。

从零开始,掌握网络安全。提供全面的网络安全教程、攻防演练技巧和行业动态。 1760

burp爆破线程设置多少_你知道线程池创建多少线程比较合理吗?

为什么会使用多线程创建多少线程比较合适结束语《Java 2019 超神之路》《Dubbo 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原理与源码解析 —— 精品合集》《Spring MVC 实现原理与源码解析 —— 精品合集》《Spring Boot 实现原理与源码解析 —— 精品合集》《数据库实体设计合集》《Java 面试题 ——...

weixin_39663378的博客 188

基于matlab的形态学的权重自适应图像去噪

数学形态学以图像的形态特征为研究对象,通过设计一套独特的数字图像处理方法和理论来描述图像的基本特征和结构,通过引入集合的概念来描述图像中元素与元素、部分与部分的关系运算。因此,数学形态学的运算由基础的集合运算(并、交、补等)来定义,并且所有的图像矩阵都能被方便地转换为集合。随着集合理论研究的不断深入和实际应用的拓展,图像形态学处理也在图像分析、模式识别等领域起着重要的应用。实验结果表明,如果仅通过串联滤波器去噪,则往往具有一定的局限性,在结果图像中也保留着较为明显的噪声。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 759

aix cpu耗时线程_你知道线程池 创建多少线程比较合理?

作者:小鱼儿_karl 来源:cnblogs.com/karlMa/p/11356041.html在设置线程池线程个数的时候,经常会想到这个问题,是不是设置的线程数越多越好?理解这个问题之前我们要先清楚的知道我们为什么使用多线程。为什么会使用多线程使用多线程的主要目的我们应该都能回答的出来就是提高程序的性能,这个提高性能其实是指 降低延迟 (发送请求到接收到数据的时间)和 提高吞吐量 (单位时间能...

weixin_33501543的博客 118

QT5软件开发入门到项目实战PDF(配完整示例代码)(持续更新)

这是一套QT5软件开发入门到项目实战的教程,并配套了所有的案例完整代码,方便QT初学者快速入门;文章里包含了QT常用的控件使用介绍、多媒体应用、线程、网络编程、蓝牙、串口、应用发布、嵌入式设备环境部署、Android环境部署等;目前一共写了19章,627页,后续也会持续更新。

5万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

线程池创建的四种_你知道线程池创建多少线程比较合理吗?

在设置线程池线程个数的时候,经常会想到这个问题,是不是设置的线程数越多越好?理解这个问题之前我们要先清楚的知道我们为什么使用多线程。为什么会使用多线程使用多线程的主要目的我们应该都能回答的出来就是提高程序的性能,这个提高性能其实是指,降低延迟 指发送请求到接收到数据的时间,和 提搞吞吐量:单位时间能可以处理更多的请求。将近延迟和提高吞吐量对应的方法有两种: 优化算法和机器的硬件性能发挥到极致。优化...

weixin_39660408的博客 151

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

线程池中各个参数如何合理设置

一、前言 在开发过程中,好多场景要用到线程池。每次都是自己根据业务场景来设置线程池中的各个参数。这两天又有需求碰到了,索性总结一下方便以后再遇到可以直接看着用。虽说根据业务场景来设置各个参数的值,但有些万变不离其宗,掌握它的原理对如何用好线程池起了至关重要的作用。那我们接下来就来进行线程池的分析。 二、ThreadPoolExecutor的重要参数 我们先来看下ThreadPoolExecutor...

riemann_的博客 4万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

你知道怎么合理设置线程池参数吗?

提交一个任务,线程池会判断当前线程数是否小于核心线程数,如果是则会立即创建一个工作线程执行任务,即使当前线程池中有空闲线程(ps:之前提交任务所创建的线程执行完任务之后就空闲下来了)可以用来执行当前提交的任务,也会创建一个新的线程去执行,概括来说就是如果没有达到核心线程数,不管当前线程池中有没有空闲线程,都会立即新建一个工作线程去执行当前任务。,即有非核心线程(线程池中核心线程以外的线程)时,这些非核心线程空闲后不会立即销毁,而是会等待,直到等待的时间超过了。如果非要回收空闲的核心线程,可以将线程池的。

weixin_41821642的博客 2102

线程池创建多少线程比较合理?

线程池创建多少线程比较合理? 在设置线程池线程个数的时候,经常会想到这个问题,是不是设置的线程数越多越好?理解这个问题之前我们要先清楚的知道我们为什么使用多线程。 为什么会使用多线程 使用多线程的主要目的我们应该都能回答的出来就是提高程序的性能,这个提高性能其实是指,降低延迟 指发送请求到接收到数据的时间,和 提搞吞吐量:单位时间能可以处理更多的请求。 将近延迟和提高吞吐量对应的方法有两种:...

微信公众号《后端学长》 2065

【线程池】线程池的7种创建方式,详细讲解

线程池(ThreadPool)是一种基于池化思想管理和使用线程的机制。它是将多个线程预先存储在一个“池子”内,当有任务出现时可以避免重新创建和销毁线程所带来性能开销,只需要从“池子”内取出相应的线程执行对应的任务即可。内存池(Memory Pooling):预先申请内存,提升申请内存速度,减少内存碎片。连接池(Connection Pooling):预先申请数据库连接,提升申请连接的速度,降低系统的开销。实例池(Object Pooling):循环使用对象,减少资源在初始化和释放时的昂贵损耗。

m0_46638350的博客 1万+

线程池创建多少线程比较合理?(一文帮你理解)

点击上方 "程序员小乐"关注,星标或置顶一起成长每天凌晨00点00分,第一时间与你相约每日英文You’ll never find the right person, ...

程序员小乐 2011
上一篇: IntelliJ IDEA 超全优化设置,效率杠杠的!
下一篇: 新来的老大说,“公司以后禁止使用Lombok”,我表示反对~
公众号-芋道源码
博客等级 码龄10年 1634粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值