面试总结sdiugiho

一、进程与线程的区别

进程: 一个在内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程可以有多个线程; windows 任务管理器中 一个 exe 就是一个进程。

线程:
进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。

不同之处的回答:

  1. 一个进程中的多个线程共享进程的堆和方法区的资源。
  2. 但每个线程有自己的程序计数器,虚拟机栈和本地方法栈,所以系统产生一个线程或者是在各个线程间切换工作时,负担远比进程小,所以线程也会被称为轻量级进程。

换而言之:

所谓定义: 进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。

资源开销: 每个进程都有独立的代码和数据空间,程序间切换会造成较大的开销;线程可看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立运行的栈和程序计数器,线程间切换开销小;

包含关系: 如果一个进程内有多个线程,则其执行过程并非一条线,而是多个线程共同完成;线程是进程的一部分,线程也被称为轻量级进程。

内存分配: 同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的。

影响关系: 一个进程崩溃后,在保护模式下不会对其他进程产生影响,但一个线程崩溃,会导致整个进程都死掉。所以多进程比多线程健壮;

执行过程: 每个独立的进程有程序的运行入口,顺序执行序列和程序出口三个部分。但线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,

多进程:操作系统中同时运行的多个程序

多线程:在同一个进程中同时运行的多个任务

多线程并不能提高运行速度,但可以提高运行效率,让CPU的使用率更高。但是如果多线程有安全问题或出现频繁的上下文切换时,运算速度可能反而更低。

什么时候用多线程,什么时候用多进程?

1、看应用。
  进程一般来说更稳定,很多服务器默认是使用进程或者只有进程模式的,如Apache/PostgreSQL。线程虽然轻快(尤其在win上),但潜在问题很多。如果你需要稳定,进程是更好的选择。如果要速度,线程可能更好。

2、看平台。
  win平台上,你可以说线程支持很优秀,反过来也可以说进程性能太低。上面提到的apache/postgresql如果在win平台上仍然使用进程的话,性能是大大不如在linux平台的。铁杆的Unix用户对线程不那么感冒。
1)需要频繁创建销毁的优先用线程
2)需要进行大量计算的优先使用线程
3) 涉及同步问题时,可考虑优先进程。
处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象。 这时候,我们就需要用到“线程同步”。 线程同步其实就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面的线程使用完毕后,下一个线程再使用。

http包的构成是什么样子的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值