1 进程与线程
1.1 进程
- 程序由指令和数据组成,如果要运行指令和读取数据,就必须将指令加载至CPU,数据加载值内存。进程就是加载指令、管理内存、管理IO的。
- 当程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。
- 进程可以理解为程序的一个实例,大部分程序可以同时运行多个实例进程(记事本,浏览器等),也有的程序只能启动一个实例进程(网易云音乐,WeGame等)
1.2 线程
- 一个进程中至少有一个线程,进程中算的多个线程共享进程的资源
- 一个线程就是一个车指令流,将指令流中的各条指令按一定的顺序交给CPU执行
- Java中,线程为最小的调度单位,进程作为资源分配的最小单位。在Windows中进程是不活动的,只是作为线程的容器。
1.3. 进程与线程对比
- 线程是进程中的一个实例,线程本身不会独立存在。
- 进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,线程则是进程的一个执行路径。
- 一个进程至少有一个线程,进程中的多个线程共享进行的资源。
2 并发性(concurrency)、并行性(parallel)
2.1 并发性
在同一时刻,只能有一条指令执行,但多个进程指令被快速轮换执行,使得宏观上具有多个进程同时执行的效果
2.2 并行性
2.3 例子
- 家庭主妇做饭、打扫卫生、给孩子喂奶,她一个人轮流交替做这多件事,这时就是并发
- 家庭主妇雇了个保姆,她们一起这些事,这时既有并发,也有并行(这时会产生竞争,例如锅只有一口,一
个人用锅时,另一个人就得等待)
- 雇了3个保姆,一个专做饭、一个专打扫卫生、一个专喂奶,互不干扰,这时是并行