1. 什么是进程
-
「过程与定义」 当一个程序被运行,其代码从磁盘被加载到内存中,这时就开启了一个进程;
-
「作用」 进程的作用是加载指令、管理内存和管理IO;
-
「与线程的关系」 进程可以看做是 线程的集合;
-
「补充」 进程可以视为是程序的一个实例,大部分程序允许同时运行多个实例进程(比如,你可以连续两次运行"记事本"程序,此时就会开启两个"记事本"进程)。
2. 什么是线程
- 「与进程的关系 & 定义」 线程存在于进程之中,一个进程有一到多个线程;
- 「作用」 将线程中的指令流以一定的顺序交由CPU去执行(换句话说,最终的执行是由线程提交的);
- 「补充」 线程更轻量,线程上下文切换成本比进程上下文切换的成本更低。
3. 二者关系
在Java中,进程是最小的资源分配单位(eg:内存分配给进程),线程是最小的调度单位;
在Windows中,进程是不活跃的,它只是线程的容器,真正活跃的是进程中的线程。

4. 通信方式
不同进程内的线程(即不同进程)通信较为复杂:
- 同一台计算机:IPC技术;
- 不同计算机:需要网络,如发送HTTP请求或响应。
同一进程内的线程通信较为简单,因为它们 共享进程中的内存,因此可以直接获取。