线程系统的分类
1.1 操作系统内核实现了线程模型(核心型线程)
- Windows - 线程与进程的多对多模型
线程效率比较高
Window Thread结构如下图所示:
1.2 操作系统核外实现的线程(用户进程)- Linux 部分 Unix 线程与进程的一对一,一对多模型,线程的调度者在核外
Linux Thread结构如下图所示:
Linux 线程的实现和调度:
2.6之前使用的是LinuxThreads,2.6之后是NPTL.(Native Posix Thread Library)
NPTL使用的也是1:1的结构,但是在信号处理,线程同步,存储管理等多方面进行了优化
为了减少进程切换的开销,我们把资源从主体分离,进程共享资源,就形成了轻量级进程
1、Android的多线程与Linux系统有什么关系?
可以谈一谈Android与Linux系统的关系,以及上面谈到的Linux的线程实现
关于Android与Linux系统的关系,我列出了以下几点
1,1、Android为什么会选择Linux?
成熟的操作系统有很多,但是Android为什么选择采用Linux内核呢?这就与Linux的一些特性有关了,比如:
1、强大的内存管理和进程管理方案
2、基于权限的安全模式
3、支持共享库
4、经过认证的驱动模型
5、Linux本身就是开源项目
更多关于上述特性的信息可以参考Linux 2.6版内核的官方文档,这便于我们在后面的学习中更好地理解Android所特有的功能特性。接下来分析Android与Linux的关系。
1.2、Android不是Linux
看到这个标题大家可能会有些迷惑,前面不是一直说Android是基于Linux内核的吗,怎么现在又不是Linux了?迷惑也是正常的,请先看下面几个要点,然后我们将对每一个要点进行分析,看完后你就会觉得Android不是Linux了。
因为它没有本地窗口系统,没有glibc的支持,而且并不包括一整套标准的Linux使用程序,同时增强了Linux以支持其特有的驱动。
具体的那些不同,可以根据自己的理解谈一谈.
2、Android如何进行多线程或者异步的处理?
1) 多线程:new Thread()、Runnable()
2) 异步处理:Handler、AsyncTask
3、什么时候需要多线程和异步?
概括来说就是耗时操作和定时操作。
Android中耗时一般是指超过5秒,定时一般是指一个schedule task 的需要。
1)IO操作(网络操作,文件操作,数据库操作...)
2)复杂的运算工作
3)消息接收方法中的耗时操作
4)计划任务
4、多线程与界面交互的方法?
1)Activity.runOnUiThread(Runnable)
2)View.post(Runnable) ;View.postDelay(Runnable , long)
3)Handler
4)AsyncTask
5、Android UI 主线程简单原则?
1)不要Block UI Thread
2)不要在UI线程外直接操作UI