第2章 Android多线程

第2章 Android多线程

ID:37718971

大小:19.96 KB

页数:4页

时间:2019-05-29

第2章 Android多线程_第1页
第2章 Android多线程_第2页
第2章 Android多线程_第3页
第2章 Android多线程_第4页
资源描述:

《第2章 Android多线程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、26、进程的概念:一般可以在同一时间内执行多个程序的操作系统都有进程的概念。一个进程就是一个执行中的程序,而每一个进程都有自己独立的一块内存空间、一组系统资源。在进程的概念中,每一个进程的内部数据和状态都是完全独立的27、线程的概念:多线程指的是在单个程序中可以同时运行多个不同的线程,执行不同的任务。线程机制支持并发程序设计,在多处理器系统上,它也能保证真正的并行处理。多线程意味着一个程序的多行语句可以看上去几乎在同一时间内同时运行。同类的多个线程共享一块内存空间和一组系统资源。28、进程与线程的关系:线程与进程相似,都是是一段完成某个特定功能的

2、代码,是程序中单个顺序的流控制。但与进程不同的是,同类的多个线程共享一块内存空间和一组系统资源,所以系统在各个线程之间切换时,资源占用要比进程小得多,正因如此,线程也被称为轻量级进程。一个进程中可以包含多个线程29、多线程和多进程相比,线程之间的通信比进程之间的通信更容易。对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过通信的方式进行,这种方式不仅费时,而且很不方便。但是对于多线程之间可以直接共享数据,比如最简单的方式就是共享全局变量。但是必须注意同步30、多线程同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用

3、就不返回,同时其它线程也不能调用这个方法。在多线程编程里面,一些敏感数据不允许被多个线程同时访问,此时就使用同步访问技术,保证数据在任何时刻,最多有一个线程访问,以保证数据的完整性31、线程同步的方式和机制:(1)临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。(2)互斥量:采用互斥对象机制。只有拥有互斥对象的线

4、程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享。(3)信号量:它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目(4)事件:通过通知操作的方式来保持线程的同步,还可以方便实现对多个线程的优先级比较的操作32、Linux多线程:Linux实现线程的机制非常独特。从内核的角度来说,它并没有线程这个概念。Linux的线程都当作进程来实现。内核并没有准备特别的调度算法或定义特别的数据结构来表征线

5、程。相反,线程仅仅被视为一个与其他进程共享某些资源的进程。每个线程都拥有唯一隶属于自己的task_struct,所以在内核中,它看起来就像是一个普通的进程(只是该进程和其他一些进程共享某些资源,如地址空间)。常常把线程称作轻量级进程。Linux下以“进程”为调度单位。33、Windows多线程:(1)Windows系统在内核中提供了专门支持线程的机制。(2)Windows不存在“进程调度”,只有“线程调度”,这是最基本的调度方式。(3)Windows下,任何一个进程都至少有一个线程,main函数会自动成为主线程的函数34、当一个程序第一次启动时,

6、Android会同时启动一个对应的主线程,主线程主要负责处理与UI相关的事件,主线程通常又被叫做UI线程。36、在开发Android应用时必须遵守单线程模型的原则:AndroidUI操作并不是线程安全的,并且这些操作必须在UI线程中执行。37、单线程模型所有的任务都在同一个线程中执行。如果执行一些耗时的操作,会阻塞整个用户界面,甚至导致用户界面失去响应。如果阻塞应用程序的时间过长(5秒钟)Android会向用户提示一些信息,即打开一个“应用程序没有相应(applicationnotresponding)”ANR的对话框。解决方法:将耗时的处理过程

7、转移到子线程上,这样可以避免负责界面更新的主线程无法处理界面事件,从而避免用户界面长时间失去响应。38、线程调度是值按照特定的机制为多个线程分配CPU的使用权。调度的模式有两种:分时调度和抢占式调度。n分时调度是所有线程轮流获得CPU使用权,并平均分配每个线程占用CPU的时间;n抢占式调度是根据线程的优先级别来获取CPU的使用权。39线程状态:新建状态(New):新创建了一个线程对象。就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。运行状态

8、(Running):就绪状态的线程获取了CPU,执行程序代码。死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。