1 进程与线程

1.1 进程

  • 程序由指令和数据组成,如果要运行指令和读取数据,就必须将指令加载至CPU,数据加载值内存。进程就是加载指令、管理内存、管理IO的。
  • 当程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。
  • 进程可以理解为程序的一个实例,大部分程序可以同时运行多个实例进程(记事本,浏览器等),也有的程序只能启动一个实例进程(网易云音乐,WeGame等)

1.2 线程

  • 一个进程中至少有一个线程,进程中算的多个线程共享进程的资源
  • 一个线程就是一个车指令流,将指令流中的各条指令按一定的顺序交给CPU执行
  • Java中,线程为最小的调度单位,进程作为资源分配的最小单位。在Windows中进程是不活动的,只是作为线程的容器。

1.3. 进程与线程对比

  • 线程是进程中的一个实例,线程本身不会独立存在。
  • 进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,线程则是进程的一个执行路径。
  • 一个进程至少有一个线程,进程中的多个线程共享进行的资源。

2 并发性(concurrency)、并行性(parallel)

2.1 并发性

在同一时刻,只能有一条指令执行,但多个进程指令被快速轮换执行,使得宏观上具有多个进程同时执行的效果

2.2 并行性

在同一时刻,有多条指令在多个处理器上同时执行。

2.3 例子

  • 家庭主妇做饭、打扫卫生、给孩子喂奶,她一个人轮流交替做这多件事,这时就是并发
  • 家庭主妇雇了个保姆,她们一起这些事,这时既有并发,也有并行(这时会产生竞争,例如锅只有一口,一

个人用锅时,另一个人就得等待)

  • 雇了3个保姆,一个专做饭、一个专打扫卫生、一个专喂奶,互不干扰,这时是并行