Android是基于Linux的移动操作系统,但是和Linux本身还是有差别的面试过程中常常会问到相关线程和进程的问题,我们不妨来了解一哈。.
受限给一张大图构建一下总体的概念
由上图可知:
一、线程
1、定义
二、进程
1、定义
是一个具有独立功能的程序关于某个数据集合的一次运行活动
三、Android进程和线程的区别
- 定义的区别(见上面)
- 基本单位区别:
1、线程是进程的一个实体,是CPU调度和分派的基本单位,是比进程更小的能独立运行的基本单位,基本上不拥有系统资源,故对他的调度所用资源小,能更高效提高系统内多个程序间并发执行的。
2、进程是系统进行资源分配和调度的一个独立单位。可以申请和拥有系统资源,一个动态的概念,一个活动的实体,是一个执行中的程序 - 进程间有不同的代码和数据空间,多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。
- 进程间相互独立,同一进程的各线程间共享,某进程内的线程在其他进程不可见。
- 进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
- 线程上下文切换比进程上下文切换要快得多。