`
阿尔萨斯
  • 浏览: 4147358 次
社区版块
存档分类
最新评论

Android 多线程系统概述及与Linux系统的关系

 
阅读更多

线程系统的分类


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


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics