目录

什么是进程?什么是线程?

为什么要有线程?

进程与线程的区别?

进程与线程的选择取决条件?

什么是进程?什么是线程?
进程:进程是并发执行程序在执行过程中资源分配和管理的基本单位(资源分配的最小单位)。进程可以理解为一个应用程序的执行过程,应用程序一旦执行,就是一个进程。每个进程都有自己独立的地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段。

线程:程序执行的最小单位。

为什么要有线程?
每个进程都有自己的地址空间,即进程空间,在网络或多用户换机下,一个服务器通常需要接收大量不确定数量用户的并发请求,为每一个请求都创建一个进程显然行不通(系统开销大响应用户请求效率低),因此操作系统中线程概念被引进。

进程与线程的区别?
1. 地址空间: 同一进程的所有线程共享本进程的地址空间,而不同的进程之间的地址空间是独立的。

2. 资源拥有: 同一进程的所有线程共享本进程的资源,如内存,CPU,IO等。进程之间的资源是独立的,无法共享。

3. 执行过程:每一个进程可以说就是一个可执行的应用程序,每一个独立的进程都有一个程序执行的入口,顺序执行序列。但是线程不能够独立执行,必须依存在应用程序中,由程序的多线程控制机制进行控制。

4. 健壮性: 因为同一进程的所以线程共享此线程的资源,因此当一个线程发生崩溃时,此进程也会发生崩溃。 但是各个进程之间的资源是独立的,因此当一个进程崩溃时,不会影响其他进程。因此进程比线程健壮。

线程执行开销小,但不利于资源的管理与保护。

进程的执行开销大,但可以进行资源的管理与保护。进程可以跨机器前移。

进程与线程的选择取决条件?
因为进程是资源分配的基本单位,线程是程序执行的最小单。以及进程与线程之间的健壮性来考虑。

1. 在程序中,如果需要频繁创建和销毁的使用线程。因为进程创建和销毁开销很大(需要不停的分配资源),但是线程频繁的调用只是改变CPU的执行,开销小。

2. 如果需要程序更加的稳定安全时,可以选择进程。如果追求速度,就选择线程。

最新文章

  1. Lesson 20 One man in a boat
  2. PHP代码 如何网页获取用户的openid
  3. javascript 模式(1)——代码复用
  4. Handler 取不到session 解决办法
  5. Oracle登录时提示错误,导致用户无法登录
  6. 【转】重载(overload),覆盖(override),隐藏(hide)的区别
  7. Hibernate之实体关系映射
  8. LeetCode刷题-004两个排序数组的中位数
  9. leetcode — simplify-path
  10. Tomcat延迟启动
  11. 泡泡一分钟:Stabilize an Unsupervised Feature Learning for LiDAR-based Place Recognition
  12. hibernate对连接池的支持和HQL查询
  13. Can’t connect to local MySQL server through socket的解决方法
  14. 第十九章 springboot + hystrix(1)
  15. 将本地项目放到GitHub上托管并展示
  16. Java连接池
  17. 洛谷 P1410 子序列(DP)
  18. C++ springf()的用法(转)
  19. day04.3-生成器
  20. 05_dubbo_aop

热门文章

  1. Linux lvm 逻辑卷篇
  2. Ruby下安装cocoapods
  3. 关于代码手写UI,xib和StoryBoard
  4. VMware Workstation 卸载时卡在“正在卸载网络驱动程序(Virtual Network Editor夯死)”
  5. LVS集群的ipvsadm命令用法
  6. Myabtis中批量更新update多字段
  7. CentOS7编译安装MySQL8.0
  8. CCPC-Wannafly Winter Camp Day1 (Div2, onsite) 夺宝奇兵
  9. 感想 - 猴子刷视频app
  10. Vue中的组件及缓存 keep-alive