一、进程与线程
1.进程
- 程序是由指令和数据组成。但是这些指令要运行,就需要将指令加载进内CPU,数据加载至内存。在指令执行的过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的。
- 当一个程序被运行,从磁盘加载这个程序的代码到内存中,此时就开启了一个进程。
- 进程可以视为程序的实例。大部分程序可以有多个进程实例(如记事本,浏览器,QQ),有的也只能开启一个实例(网易云音乐,360安全卫士)
2.线程
- 一个进程内部可以分为一到多个线程。
- 一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给cpu执行。
- Java中,线程是最小的调度单位,进程是资源分配的最小单位。在windows中,进程是不活动的,只是作为线程的容器。
二、并行与并发
1.并发
并发(concurrent)是同一时间应对(dealing with)多件事情的能力。
2.并行
并行(parallel)是同一时间内动手做(doing)多件事情的能力。
例子
- 一个家庭主妇做饭、打扫卫生、给孩子喂奶,她一个人轮流交替做这些事情,这时就是并发。
- 家庭主妇雇了一个保姆,她们两个同时做这三件事情,这时既有并发,也有并行。(而且会产生竞争关系,比如锅只有一口,一个人使用的时候另一个人就需要等待)
- 雇了3个保姆,一个保姆专门做饭,一个保姆专门打扫卫生、一个保姆专门给孩子喂奶,互不干扰,这就是并行。
三、线程的应用
1.异步调用
2.提升效率