一,预备知识:
1,(计算机)程序:
计算机程序或者软件程序(通常简称程序)是指一组指示计算机每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。
2,进程:
进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
3,程序与进程的总结:
程序是指令、数据及其组织形式的描述,进程是程序的一次运行过程的实体。
4,线程:
操作系统能够进行运算调度的最小单位。它被包涵在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程
中可以并发多个线程,每条线程并行执行不同的任务。在Unix System 中也被称为轻量进程,但轻量进程更多指内核线程,而把用户线程称为线程。
5,进程与线程的关系:
图形化窗口程序(文字处理软件、图形处理软件),服务器线程池解决方案。以文字处理程序为例说明:(涉及消息处理机制,各个操作系统解决方案略有不同,网络上很多资源)
handler的引入方便的解决了线程间通信的问题,当然你也可以自己封装一个类进行信息的传递(有handler也没必要了,毕竟不是程序设计的重点)。当一个apk文件运行后,他就会在内存中开辟一个内存空间,那么程序的所有线程将会共享这一块内存区域,共享其中的全局变量。每个线程也有自己的独立空间,通过上面的图可以看出来。线程可以访问程序的全局变量,但是,却不能直接访问其他的线程的变量(相对独立)。这个时候,设置一个全局的handler(可以在各个线程所在的一个类中设置,若设置成局部变量,一般也就不具备通信能力了),这样,各个线程可以访问他,使用他设置的存储访问变量的方法,然后,线程间的通信就变得简单了。
多线程编程中对资源的合理分配是编程中不可忽略的一个部分,否则,各个线程对共享资源的不合理使用会很容易的造成程序运行结果的错误。了解进程与线程的关系可以很好地理解出现资源竞争的原因(对共享资源的使用),并能很好地解决这个问题,还有助于理解编程语言对于竞争资源采取的解决措施(例如Java中采用锁机制等)。