paip.为什么使用多线程的原因.

作者Attilax  艾龙,  EMAIL:1466519819@qq.com 
来源:attilax的专栏
地址:http://blog.csdn.net/attilax

判断是否要使用多线程:主要是查看cpu使用率,要是不饱满,拿可能走需要多线程了...或者界面会卡死,这种情况下也要多线程...

//使用多线程的原因
1.防止界面卡死.提高用户的用户体验
对单核CPU,对客户端软件,采用多线程,主要是 创建多线程将一些计算放在后台执行,而不影响用户交互操作。(用户界面 & 其他计算 并行进行)提高用户的操作性能!
2.耗时的操作(io,网络io等)使用线程,提高cpu使用率..
I/O操作不仅包括了直接的文件、网络的读写,还包括数据库操作、Web Service、HttpRequest以及.net Remoting等跨进程的调用。
要是不使用多线程,你回发现cpu使用率很空闲..

3.多CPU(核心)中,使用线程提高CPU利用率
 使多CPU系统更加有效
操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上。
要是不使用多线程,你回发现仅仅一个cpu很忙碌的,其他cpu使用率很空闲..

不适用多线程的情况,

1.你的代码是cpu密集型,在单核cpu上..
2.单核cpu上,线程的使用(滥用)会给系统带来上下文切换的额外负担。并且线程间的共享变量可能造成死锁的出现。
3.当需要执行I/O操作时,使用异步操作常常比使用线程+同步I/O操作更合适。

  

paip.为什么使用多线程的原因.相关推荐

  1. paip.C#.NET多线程访问 toolStripStatusLabel

    paip.C#.NET多线程访问 toolStripStatusLabel 作者Attilax ,  EMAIL:1466519819@qq.com toolStripStatusLabel控件比较特 ...

  2. Qt中使用多线程的一些心得(一)——继承QThread的多线程使用方法

    一 前言 二Qt多线程方法一 继承QThread 2.1使用多线程的原因分析 2.2 写一个继承于QThread的线程 三 总结 一 前言   本篇文章部分内容参考了该博文:传送门.   Qt中有两种 ...

  3. Java基础之多线程详细分析

    在了解多线程之前,先来了解一下进程与线程之间的关系. 进程和线程: 进程是指在系统中正在执行的一个程序,每个进程之间是独立的. 线程是进程的一个基本执行单元.一个进程要想执行任务,必须得有线程(每1个 ...

  4. 多线程《一》线程理论

    一 什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程(流水线的工作需要电源,电源就相当于cpu),而一条流水线必须属于一个车间,一 ...

  5. 多线程 空值线程数_【开发者成长】深入理解多线程编程

    云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 为什么要使用多线程? 防止并发编程出错最好的办法就是不写并发程序 既然多线程编程容易出错,为什么它 ...

  6. 使用JDK自带的工具jstack找出造成运行程序死锁的原因

    Java多线程编程也是Java面试中经常考察的内容.刚接触Java多线程编程的朋友们,可能会不慎写出一些会导致死锁(deadlock)的应用出来.如何分析造成Java多线程的原因呢?很多时候我们在怀疑 ...

  7. Redis 5.0.8+常见面试题(单线程还是多线程、先更新缓存还是数据库、雪崩穿透击穿解决办法...)

    Redis 6.0 保姆级教程(含微服务案例与完整面试题):https://www.yuque.com/yuxuandmbjz/redis Redis是单线程还是多线程 ?为什么这么设计 ? Redi ...

  8. Redis单线程和多线程

    Redis单线程 Reids是单线程! Reids是单线程! Reids是单线程! Redis架构模型:Redis 基于 Reactor 模式来设计开发了自己的一套高效的事件处理模型 ,即文件事件处理 ...

  9. linux用c进程并行,Linux下的C / C ++使用多线程

    使用多线程的原因之一是,与进程相比,它是一种非常"节俭"的多任务操作模式. 我们知道,在Linux系统下,要启动一个新进程,必须将其分配给其独立的地址空间,建立大量数据表以维护其代 ...

  10. 【Java】多线程(以java webcam实现视频功能为例)

    [Java]多线程(以实现视频功能为例) 文章目录 [Java]多线程(以实现视频功能为例) step1:如何实现视频 step2:为什么关不掉?(需要多线程的原因) step3:实现 打开视频 启动 ...

最新文章

  1. 网络编程学习笔记(shutdown函数)
  2. Excel:5种判断奇数和偶数的方法
  3. Enterprise Library学习所得(一):总体概述
  4. 请分别介绍一下aof和rdb都有哪些优点?以及两者有何区别?
  5. 很酷的word技巧---删除行前的空格
  6. ZOJ 3720 Magnet Darts (计算几何,概率,判点是否在多边形内)
  7. 批量删除指定user和transaction type对应order的report
  8. php 相册分类,这款不需要网络就可以智能识别分类照片,让你的相册不再混乱...
  9. WebSocket知识点总结
  10. 【CV101大会录播】人流密度/河道污染/安全帽识别获奖算法
  11. python外星人入侵游戏run_game报错_《python编程从入门到实践》书中的外星人入侵小游戏报错...
  12. MFC_recvfrom
  13. 杭电1716排列2 stl
  14. MPLAB IDE 编译器文件归类整理
  15. python—装饰器@lru_cache在递归中的使用
  16. 版本 tomcat_Tomcat爆出安全漏洞!Spring Cloud/Boot框架多个版本受影响
  17. 新一代多媒体技术与应用的部分课后题
  18. MySQL联合主键保存_mysql联合主键
  19. 初学者该掌握的计算机知识,初学者该如何学习电脑知识
  20. cad隐藏图层命令快捷键_Auto CAD如何快速隐藏图层,快捷键是什么?

热门文章

  1. Google code android开源项目(一)
  2. 我与分布式机器学习的故事
  3. sqlserver无ldf日志文件附加的方法(数据库没有完全关闭,无法重新生成日志)...
  4. C语言实现base64编码,base64解码
  5. Extjs 之dataview布局
  6. 数据库连接客户端 dbeaver 程序包以及使用说明
  7. Java - Java Mail邮件开发(3)spring +Java Mail + Velocity
  8. python-第三课-字符串详解
  9. Hbuilder Webview调试+逍遥安卓模拟器
  10. 如何使用MOQ进行单元测试