一、 从多线程提高程序执行效率的角度,讨论如何提高效率以及为什么使用多线程

1.1 在多核处理系统上,将要执行的任务分割成多个可并行执行线程,就可以提高执行速率

1.2 单处理器上多线程只能并发执行而不是并行,并发原理,其实就是cpu快速来回切换,在特定的时间执行特定的某一个任务。并发执行存在着线程间上下文切换的问题,会消耗一定的时间。如果不考虑阻塞,多线程并发执行其实比单线程执行更加耗费时间,线程过多也会造成CPU负荷过大,并且线程占用内存资源,创建销毁线程也都是需要开销的。

多线程通过提供CPU利用率来提高效率。数据库访问、磁盘IO等操作的速度比CPU执行代码速度慢很多,单线程环境下,这些操作会阻塞程序执行,导致CPU空转,因此对于会产生这些阻塞的程序来说,使用多线程可以避免在等待期间CPU的空转,提高CPU利用率。

考虑到多线程存在的一些缺点,现在的网络服务器为了支持大量并发多不是靠多线程或多进程,而采用其他的技术如异步i/o

二 、从程序设计的角度,讨论为什么使用多线程

使用多线程可以有效的避免阻塞,从而可以设计响应式程序,用户界面更加吸引人,比如用户点击了一个按钮去触发某事件的处理,将事件处理作为一个单独线程,另外设计线程弹出一个进度条来显示处理的进度。

三、顺便一提多进程

多进程模式最大的优点就是稳定性高,因为一个子进程崩溃了,不会影响主进程和其他子进程。(当然主进程挂了所有进程就全挂了,但是Master进程只负责分配任务,挂掉的概率低)著名的Apache最早就是采用多进程模式。

多进程模式的缺点是创建进程的代价大。另外,操作系统能同时运行的进程数也是有限的,在内存和CPU的限制下,如果有几千个进程同时运行,操作系统连调度都会成问题。

多线程模式通常比多进程快一点,但是也快不到哪去,而且,多线程模式致命的缺点就是任何一个线程挂掉都可能直接造成整个进程崩溃,因为所有线程共享进程的内存。在Windows上,如果一个线程执行的代码出了问题,你经常可以看到这样的提示:“该程序执行了非法操作,即将关闭”,其实往往是某个线程出了问题,但是操作系统会强制结束整个进程。

四、多线程应用举例

1. 图形用户界面中,多线程可以提供用户界面响应灵敏度。

2. 服务器应用程序中,可以提升资源利用率以及系统吞吐率。比如在tomcat中一部分线程接受请求,另一部分线程处理请求。

3. 下载大文件时,大文件可以分成多个部分,每个线程下载一部分。

4. 分布式计算。

5. 定时任务。

6. 生产者和消费者模型。

7. Servlet和JSP,多并发时可能有多个客户端请求Servlet,Servlet必须是线程安全的。


http://www.taodudu.cc/news/show-2344499.html

相关文章:

  • 常见For 循环优化方式总结——提高效率小妙招
  • 如何提高项目管理效率
  • 突发奇想!自动化测试在测试过程中该怎样提升效率?
  • oracle查询怎样更效率,Oracle提高查询效率的方法
  • oracle索引如何提高效率,ORACLE用索引提高效率
  • 如何提升工作效率
  • 如何提高工作效率,提高工作效率的方法?
  • 谈谈如何提升工作效率,需要从这4方面入手!
  • 分享3个提升效率的方法
  • 2021认证杯 第二阶段 思路加代码
  • 2020认证杯第二阶段选提建议
  • 2020年C题认证杯SEIR模型参数拟合
  • 2021 年“认证杯”网络挑战赛 B 题(第二阶段)
  • 2022 SPSSPRO杯A|B|C题思路分享【认证杯】
  • 2021 年“认证杯”网络挑战赛 B 题(第一阶段)
  • 2021认证杯C题
  • NX/UG二次开发—CAM—获取、修改程式的切削参数
  • 德律aoi程式制作_精典德律AOI检测程式制作手册(全).ppt
  • 驅動程式架構
  • [笔记]PLC可程式模拟器-2
  • 4gl程式debug常用技巧
  • 输入一个整数求其各位数字的平方和c语言,C++程式输入一个长整数,求各位数字的平方和...
  • c语言编程中exp,c语言中exp是什么函式
  • c语言输入任意两个数求乘积,C语言程式 从键盘输入两个小数,输出它们的和及乘积...
  • CLIPS程式技巧
  • [笔记]PLC可程式模拟器1
  • Windows程式开发设计指南--Unicode简介
  • 单车程式
  • 原生开发什么意思_原生App是什么意思
  • Windows程式开发设计指南--视窗和讯息

为什么使用多线程,多线程如何提高效率相关推荐

  1. 多线程为什么可以提高效率

    JAVA多线程,真的能提高效率吗 举个栗子 比如挖一个隧道,有2种开工方法 1.只在山的一头挖,直至挖到山的另一头,从而打通隧道,这可以看成是单线程 2.在山的两头挖,同时开工,最后在山的中间接通,从 ...

  2. JAVA多线程,真的能提高效率吗

    举个栗子 比如挖一个隧道,有2种开工方法 1.只在山的一头挖,直至挖到山的另一头,从而打通隧道,这可以看成是单线程 2.在山的两头挖,同时开工,最后在山的中间接通,从而打通隧道,这感觉肯定比1快了很多 ...

  3. 多线程在任何情况下均能提高效率吗?

    早段时间在网上看到一篇文章,其中就写了使用多线程模型实现文件的快速搜索.由此使我一直在考虑,多线程模型真的能够提高应用程序的效率吗?如果不能,那么多线程模型能干什么呢? 很多程序员一谈到提高应用程序效 ...

  4. JAVA用多线程反而变慢了_Java中使用多线程不能明显提高程序效率的一些原因

    java中使用多线程不能明显提高程序效率的一些原因. 使用多个线程来处理多任务的时候,效率肯定是有提高的.但是必须要慎用,否则容易出现问题. 1.多线程主要是为了充分利用多核cpu,大内存这些资源. ...

  5. python和c运行速度的对比实验_Python中单线程、多线程和多进程的效率对比实验...

    原标题:Python中单线程.多线程和多进程的效率对比实验 文 | 饒木陽 Python是运行在解释器中的语言,查找资料知道,python中有一个全局锁(GIL),在使用多进程(Thread)的情况下 ...

  6. Python中单线程、多线程与多进程的效率对比实验

    Python是运行在解释器中的语言,查找资料知道,python中有一个全局锁(GIL),在使用多进程(Thread)的情况下,不能发挥多核的优势.而使用多进程(Multiprocess),则可以发挥多 ...

  7. python io密集型应用案例-Python中单线程、多线程和多进程的效率对比实验实例

    python的多进程性能要明显优于多线程,因为cpython的GIL对性能做了约束. Python是运行在解释器中的语言,查找资料知道,python中有一个全局锁(GIL),在使用多进程(Thread ...

  8. 多线程一定比单线程效率更高吗?

    单线程的也就是程序执行时,所跑的程序路径(处理的东西)是连续顺序下来的,必须前面的处理好,后面的才会执行到. 而多线程,举个例子也就是说程序可以同时执行2个以上相同类似的操作,比如一些搜索代理或者群发 ...

  9. 多线程和单线程执行效率比较

    单线程的也就是程序执行时,所跑的程序路径(处理的东西)是连续顺序下来的,必须前面的处理好,后面的彩绘执行到.  多线程嘛,举个例子也就是说程序可以同时执行2个以上相同类似的操作,比如一些搜索代理或者群 ...

  10. Android 功耗(18)---android省电和提高效率

    android省电和提高效率 一.Android省电开发之性能优化 我之前博客有在总结,just a little,http://blog.csdn.net/wtyvhreal/article/det ...

最新文章

  1. 基于uFUN开发板的心率计(一)DMA方式获取传感器数据
  2. 3d模型 vv5_WEY VV5硬刚现代ix35!神仙颜值种草95后小伙
  3. linux环境变量显示、添加、删除
  4. ActiveMQ的签收方式
  5. 常用Git指令常用git命令清单
  6. linux ll命令无效
  7. netflix_Netflix播放按钮剖析
  8. NIO学习–核心概念与基本读写
  9. 选择Java加密算法第3部分–公钥/私钥非对称加密
  10. 疯狂VirtualBox实战讲学录 以及 virtualbox完全学习手册 之我见
  11. matlab 曲线拟合--视频编码中PSNR计算及码率计算
  12. php array 删除末尾,PHP array_pop():删除数组末尾的元素
  13. 数据库建立索引的优缺点及适合建立索引的字段
  14. IEEE 会议论文的参考文献
  15. 双十一淘宝美妆消费数据分析
  16. STM32单片机初学心得
  17. 《一个64位操作系统的设计与实现》学习实践3-boot加载loader
  18. 网络共享计算机权限访问,共享电脑没有访问权限_共享电脑无访问权限
  19. 浅记项目管理交付标准
  20. component has been registered but not used

热门文章

  1. 为什么计算机能读懂 1 和 0
  2. Worthington 蛋白质组学/蛋白酶方案
  3. AppStore SDK
  4. 抽样:理论与应用(第二版) 金勇进 课程笔记 1~4章
  5. 字节实习成功提前转正啦!
  6. 浏览器设置阻止第三方Cookie保护自己隐私
  7. bzoj-1488 图的同构
  8. Firemonkey下使用StyleBook的一些经验
  9. IT黑马之用户信息管理系统
  10. 数字图像处理(2): 颜色空间/模型—— RGB, CMY/CMYK, HSI, HSV, YUV