当前位置: 首页 > news >正文

面试总结sdiugiho

一、进程与线程的区别

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

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

不同之处的回答:

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

换而言之:

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

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

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

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

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

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

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

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

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

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

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

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

http包的构成是什么样子的

http://www.lryc.cn/news/56154.html

相关文章:

  • WIN10無法再使用 IE 瀏覽器打开网页解决办法
  • 搭建SpringBoot和Mysql Demo
  • 晶振03——晶振烧坏的原因
  • 项目管理的难点
  • day22 ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点
  • ChatGPT 这个风口,普通人怎么抓住?
  • Python代码规范:企业级代码静态扫描-代码规范、逻辑、语法、安全检查,以及代码规范自动编排(2)
  • acme.sh从 letsencrypt 生成SSL免费证书并自动更新证书
  • 基于html+css的evenly布局
  • 【从零开始学习 UVM】10.5、UVM TLM —— UVM TLM Blocking Get Port
  • English Learning - L2 第 10 次小组纠音 辅音 [m] [n] [ŋ] 半元音 [w] [j] 2023.3.29 周三
  • 从零开始实现一个C++高性能服务器框架----环境变量模块
  • git常用命令的解释
  • DNS和CDN的区别与联系
  • Java基础知识 | 常见面试题(中):面向对象基础
  • 勒索软件正在从 Windows 转向 Linux
  • 信息系统项目管理师 第11章 项目成本管理
  • XML 简介
  • ERP:华为杀入,金蝶们打颤?
  • Linux——总复习1
  • 控制SQL*PLUS的环境和数据字典简介
  • Chapter11.3:MATLAB_SIMULINK在离散系统中的应用
  • 过滤器Filter
  • MySQL数据同步ES的常用思路和方法
  • spring源码之扫描前设置
  • C++ 98/03 应该学习哪些知识19
  • java毕业生就业信息管理系统servlet程序
  • linux命令-netstat
  • 微服务+springcloud+springcloud alibaba学习笔记【Rest微服务工程搭建】(2/9)
  • 【Redis7】Redis7 十大数据类型