iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >在程序开发中线程数量如何设置才最合理
  • 934
分享到

在程序开发中线程数量如何设置才最合理

2024-04-02 19:04:59 934人浏览 泡泡鱼
摘要

这篇文章主要介绍在程序开发中线程数量如何设置才最合理,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 那么现在有个问题来了,在应用中,针对多线程开发,线程数量我们要怎么设置才

这篇文章主要介绍在程序开发线程数量如何设置才最合理,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

 

那么现在有个问题来了,在应用中,针对多线程开发,线程数量我们要怎么设置才最合理呢?是不是越多越好?

当然不是,在多线程中,不得不提的上下文切换

上下文切换

首先在单核CPU中,也是可以处理多线程的,只是CPU通过给每个线程分配CPU时间片来处理的,假设我们有A、B两个线程执行任务,CPU在非常短的时间(时间片)执行A线程,然后再执行B线程,如此往复执行,不停的切换(切换时保持之前的状态),由于时间片的间隙非常短,让我们感觉是同时执行的,即多线程,而这种切换就叫上下文切换。

从上面的描述我们可以知道,上下文切换,必然会出现之前的状态保持和启动,必然会导致性能的损耗,因此多线程的数量多就不一定快,也就说明了线程数量不是越多越好。

那么怎么合理的设置线程数量呢?

多线程任务分类

通常针对多线程一般分为两类场景:

io密集型:IO密集型通常指程序运行期间,大部分的耗时是用来进行I/O操作,而这个时间线程不会占用CPU来处理。

CPU密集型:CPU密集型通常是指系统运行时会消耗掉大量的CPU资源,例如需要大量的计算,一些复杂运算,逻辑处理之类的。

因此针对不同场景线程的数量设置也不一样

I/O密集型

由于系统运行大部分都是在进行I/O交互,并不会暂用cpu资源,因此可以提高线程数,对线程数可以用以下计算公式:

最佳线程数 = ((线程等待时间+线程CPU时间)/线程CPU时间 )* CPU核心数

这样假设线程无等待,最佳线程数 = 1 * CPU核心数,而实际上线程一般都会存在等待时间,可以保守认为等待时间和线程CPU时间一样,即 2 *  CPU核心数,因此一般都设置为

最佳线程数 = CPU核心数 * 2

CPU密集型

对于CPU密集型的,绝大部分都是利用cpu资源进行计算,因此一般对于此类场景,最佳线程数量设置为CPU核心线程数+1,以充分利用多核心CPU的处理能力。

最佳线程数 = CPU核心数 + 1

java获取cpu核心数的方法如下:

Runtime.getRuntime().availableProcessors()

以上是“在程序开发中线程数量如何设置才最合理”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网node.js频道!

--结束END--

本文标题: 在程序开发中线程数量如何设置才最合理

本文链接: https://www.lsjlt.com/news/67975.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 在程序开发中线程数量如何设置才最合理
    这篇文章主要介绍在程序开发中线程数量如何设置才最合理,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 那么现在有个问题来了,在应用中,针对多线程开发,线程数量我们要怎么设置才...
    99+
    2024-04-02
  • java线程池如何合理设置最大线程数和核心线程数
    这篇文章将为大家详细讲解有关java线程池如何合理设置最大线程数和核心线程数,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。线程池合理设置最大线程数和核心线程数工作中有这样一个场景,需要处理千万级别的数据的...
    99+
    2023-06-22
  • java线程池合理设置最大线程数和核心线程数方式
    目录线程池合理设置最大线程数和核心线程数一开始是这么配置的后来网上查询线程池核心数配置最后我是这么配置的线程池核心线程数与最大线程数的区别线程池策略饱和策略线程池合理设置最大线程数和...
    99+
    2024-04-02
  • win7程序(任务栏右下角)小图标应该如何设置才最合理
      电脑越来越先进,各种软件也越来越多,导致现在我们很多人在玩电脑的时候,右下角的小图标都会有好多。怎么来设置右下角的小图标才是最合理的呢   1、win7右下角的小图片如图:   2、如果很多时候通知区域图标(右下角...
    99+
    2023-05-31
    win7 任务栏 右下角小图标 程序 图标
  • Java线程池中的各个参数如何合理设置
    一、前言 在开发过程中,好多场景要用到线程池。每次都是自己根据业务场景来设置线程池中的各个参数。 这两天又有需求碰到了,索性总结一下方便以后再遇到可以直接看着用。 虽说根据业务场景来...
    99+
    2024-04-02
  • 如何在PHP开发中处理多线程和进程管理?
    如何在PHP开发中处理多线程和进程管理?简介:在PHP开发中,多线程和进程管理是一个重要的话题。随着应用程序变得越来越复杂,处理并发和高并发访问请求的能力变得至关重要。本文将介绍如何在PHP开发中处理多线程和进程管理的技术和工具。一、多线程...
    99+
    2023-11-03
    PHP并发编程 PHP多线程处理 PHP进程管理
  • 微信小程序开发多线程处理机制worker如何配置
    本文小编为大家详细介绍“微信小程序开发多线程处理机制worker如何配置”,内容详细,步骤清晰,细节处理妥当,希望这篇“微信小程序开发多线程处理机制worker如何配置”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-06-26
  • PCIDSS2.3:如何在设备配置中管理应用程序
    作者:禅与计算机程序设计艺术 PCI DSS(Payment Card Industry Data Security Standards) 是国际标准化组织(ISO)于2008年发布的一套安全规范,...
    99+
    2023-09-02
    自然语言处理 人工智能 语言模型 编程实践 开发语言 架构设计
  • 如何在 ASP 程序中设置 HTTP 容器的参数?
    ASP 程序是一种常见的网站开发技术,HTTP 容器是 ASP 程序的核心组件之一。HTTP 容器是负责接收和处理 HTTP 请求的组件,因此设置 HTTP 容器的参数对于 ASP 程序的性能和安全非常重要。本文将介绍如何在 ASP 程序中...
    99+
    2023-06-03
    日志 http 容器
  • 微信小程序开发中如何设置置顶栏文字内容
    这篇“微信小程序开发中如何设置置顶栏文字内容”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“微信小程序开发中如何设置置顶栏文字内容”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解...
    99+
    2023-06-26
  • 小程序开发中如何动态设置置顶栏文字内容
    本文将为大家详细介绍“小程序开发中如何动态设置置顶栏文字内容”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“小程序开发中如何动态设置置顶栏文字内容”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容...
    99+
    2023-06-26
  • 如何使用PHP开发微信小程序的在线课程功能?
    如何使用PHP开发微信小程序的在线课程功能?随着移动互联网的快速发展,微信小程序正逐渐成为企业和个人开展业务的利器。在教育行业中,使用微信小程序开发在线课程功能已经成为了一个热门的需求。本文将介绍如何使用PHP来开发微信小程序的在线课程功能...
    99+
    2023-10-27
    PHP 微信小程序 在线课程
  • Windows如何设置开始菜单中显示程序数目
    小编给大家分享一下Windows如何设置开始菜单中显示程序数目,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!将鼠标移至开始菜单图标上,单击右键,弹出的菜单中只有两个选项,点击“属性”。在属性设置窗口中,切换到“开始菜单”,...
    99+
    2023-06-28
  • JS中如何设置事件处理程序
    这篇文章主要介绍JS中如何设置事件处理程序,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!第一种方式(HTML标签属性):<input type="butto...
    99+
    2024-04-02
  • 小程序开发中如何设置系统剪贴板的内容
    这篇“小程序开发中如何设置系统剪贴板的内容”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“小程序开发中如何设置系统剪贴板的内容”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接...
    99+
    2023-06-26
  • C#开发中如何处理并发编程和线程同步问题
    C#开发中如何处理并发编程和线程同步问题,需要具体代码示例在C#开发中,处理并发编程和线程同步问题是非常重要的。并发编程是指在程序中同时执行多个任务或操作,而线程同步则是指多个线程在访问共享资源时的协调和同步。为了解决并发编程和线程同步问题...
    99+
    2023-10-22
    线程同步 处理问题 C#关键词: 并发编程
  • 在程序的开发中PHP如何提高程序的运行效率
    在程序的开发中PHP提高程序运行效率的方法:1.查询语句中尽量不使用select *。2.需要查什么数据用对应的字段,减少查询内容。3.少用子查询可用表连接代替。4.少用模糊查询。5.在数据表中创建索引。6.对程序中经常用到的数据生成缓存。...
    99+
    2024-04-02
  • 小程序开发中如何打开地图选择位置
    这篇“小程序开发中如何打开地图选择位置”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“小程序开发中如何打开地图选择位置”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下...
    99+
    2023-06-26
  • 如何在微信小程序中实现PHP开发?
    如何在微信小程序中实现PHP开发?随着移动互联网的发展,微信小程序成为了开发者们的热门选择。而对于想要使用PHP语言开发的开发者来说,如何在微信小程序中实现PHP开发成为了一个关键问题。本文将介绍如何在微信小程序中实现PHP开发,并给出具体...
    99+
    2023-10-28
    PHP 微信小程序 实现
  • Android开发中如何实现在一个程序中启动另一个程序
    Android开发中如何实现在一个程序中启动另一个程序?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Android 开发有时需要在一个应用中启动另一个应用,比如...
    99+
    2023-05-31
    android roi
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作