
2022-01-21
243
原创
进程线程、并行并发
进程和线程
进程
- 当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程
- 进程可以视作程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本,画图,浏览器等),也有的程序只能启动一个实例进程(例如网易云音乐,360等)
线程
- 一个进程之内可以分为一到多个线程
- 一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给CPU执行
- Java中,线程作为最小的调度单位,进程作为资源分配的最小单位。
并行与并发
单核CPU下,线程实际还是串行执行的。CPU在线程间切换,这种线程轮流使用CPU的做法称为并发concurrent,
多核CPU下,每个核都可以调度运行线程,这时候线程可以是并行的
我在网上看见过Go语言之父是这样描述并发和并行的
并发(concurrent)是同一时间应对多件事情的能力
并行(parallel)是同一时间动手做多件事情的能力
举个栗子
- 家庭主妇做饭、打扫卫生、给孩子喂奶,她一个人轮流交替做这多件事,这就是并发
- 家庭主妇雇了三个保姆,一个专门做饭,一个专门打扫卫生、一个专门给孩子喂奶,这就是并行
多线程