理解程序、进程、线程

**

理解程序、进程、线程

**
1.概念理解
程序(programm):一段静态的代码。
进程:资源分配的基本单位
线程:CPU调度的基本单位,是轻量级“进程”。
举例:以手机为例
手机上有很多APP,比如微信,淘宝,QQ等等,它们就相当于是进程,启动他们,将相当于是开启了一个进程,以微信为例,你可以打开聊天对话框,发朋友圈或者玩微信小游戏,这些就相当于是线程。
2.进程和线程的区别:
(1)多个进程之间是相互独立的,而多个线程之间是资源共享的。
(2)一个进程可以包含多个线程。多个线程共享该进程中的方法区和栈,但每个线程拥有自己独立的栈和程序计数器。
(3)创建或者销毁一个线程比创建或者销毁一个进程成本低,因为新创建一个线程,不需要给这个线程分配很多新资源,大部分资源都是和原来的线程共享的,而创建一个进程,就需要给这个进程分配较多的资源。
3.理解多线程并行和并发
并行:多个CPU同时执行多个任务。比如:多个人同时做不同的事。
并发:一个CPU(采用时间片)同时执行多个任务。比如:秒杀、多个人做同一件事

4.一个进程中的线程是越多越好吗?
不是。一个进程所能容纳的线程数目是有限的。当线程数目太多的时候,线程并发能力就达到上限了,也就是说部分线程并没有执行,继续增加线程效率也不会提高,甚至可能会拖慢效率(线程调度也是有开销的)。
那一个进程中最多可以容纳多少个线程呢?
(1)CPU个数相关
(2)线程执行的任务类型
任务类型分为两种:CPU密集型和IO密集型
CPU密集型:程序一直在执行计算任务
IO密集型:程序没咋进行计算,主要是进行输入输出操作。
举例:
假设一个主机有4核CPU【两种极端情况】
任务纯是CPU密集型的,此时线程的数目大概就是4个左右;如果任务纯是IO密集型的,理论上,线程数目无限制。
现实中的情况是要介于两者之间,实践中一般需要通过测试的方式来找到合适的线程数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值