Android进程和线程的区别

来源:互联网 发布:js textarea 编辑高亮 编辑:程序博客网 时间:2024/05/29 16:28

恩恩,今天参加阿里的面试,被问到Android中进程和线程的区别,着实把我伤脑了,表示平时开发的时候只知道线程,并没有去仔细关注过进程,所以下来特地去查了以下资料,先说说线程:

(1)在Android APP中,只允许有一个主线程,进行UI的渲染等等,但是不能进行耗时操作(网络交互等等),否则会造成ANR,就是线程阻塞卡死,未响应。

(2)除了主线程之外,耗时操作都应该规范到子线程中,线程之间会有相应的通信方式,但相互独立。

(3)然后看了一下所查资料:

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程比进程更小,基本上不拥有系统资源,故对它的调度所用资源小,能更高效的提高系统内多个程序间并发执行的。 嗯,从大的说就是这样。

在平时的Android开发过程中,基本上都会用到线程handler,thread等等,具体的实现方法我就不在这里写了。


进程:

根据所查资料:是一个具有独立功能的程序关于某个数据集合的一次运行活动。进程是系统进行资源分配和调度的一个独立单位。可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体,是一个“执行中的程序”。不只是程序的代码,还包括当前的活动。 

这应该是一个比较大的概念,存在于一个系统中,与线程的区别是:

   1、子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。

   2、进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。

      3、进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。

      4、线程上下文切换比进程上下文切换要快得多。


2 0
原创粉丝点击