android面试-Android的线程和线程池
来源:互联网 发布:巴铁骗局 知乎 编辑:程序博客网 时间:2024/06/05 09:23
前言:
这一部分参考Android开发艺术探索的总结,所以最好有一本书来看,里面的内容会详细很多
线程与服务的区别:
如果你的 Thread 需要不停地隔一段时间就要连接服务器做某种同步的话,该 Thread 需要在 Activity 没有start的时候也在运行。这个时候当你 start 一个 Activity 就没有办法在该 Activity 里面控制之前创建的 Thread。因此你便需要创建并启动一个 Service ,在 Service 里面创建、运行并控制该 Thread,这样便解决了该问题(因为任何 Activity 都可以控制同一 Service,而系统也只会创建一个对应 Service 的实例)。
AsyncTask:
采用Thread与Handler,但不适合特别耗时的任务。
四个主要方法:onPreExecute()、doInBackground()、onProgressUpdate()、onPostExecute()、onCancelled()被调用时onPostExecute不会调用
从execute()开始会先进行onPreExecute,AsyncTask是通过两个线程池、一个Handler进行操作。串行线程池通过ArrayDeque进行线程任务排队,另一个线程池进行任务的执行doInBackground。Handler主要是进行onProgressUpdate、onPostExecute(会有进行取消的判断,如果取消了,就不会进行onPostExecute的操作)
Handler是一个静态的对象,能够将执行环境切换到主线程中,静态成员在进行加在类的时候会初始化,因此需要将AsyncTask在主线程中加载。
串行:Android4.1之后是默认串行,如果想要并行的话,需要一个、executeOnExecutor方法进行并行的处理
HandlerThread:
采用Handler与Thread的结合,主要是对于Handler机制的理解。
IntentService:
基于HandlerThread进行操作,通过onStart里面的Handler发送消息Intent,即启动Intent服务时的Intent,由于Handler是按顺序进行操作的,所以进行耗时操作的时候也是按照顺序的,onStopself(startId)来判断是否已经运行完,否则等待所有服务进行完才结束。
线程池:
线程池可以重用线程,避免因为线程的重用、销毁所带来的性能开销
能控制线程池的最大并发数,避免资源争夺导致的阻塞
ThreadPoolExecutor:核心线程数、最大线程数、超时时间、
线程池分类:
FiexedThreadPool:只有核心线程
CachedThreadPool:只有非核心线程
ScheduledThreadPool:核心线程固定,非核心没有限制,非核心闲置时会被立即回收
SingleThreadPool:只有一个核心线程,确保顺序执行(这个在面试深信服的时候,面试过问过A、B、C如何保证顺序执行)
阅读全文
0 0
- android面试-Android的线程和线程池
- Android的线程和线程池
- Android的线程和线程池
- Android的线程和线程池
- Android的线程和线程池
- 十一、Android的线程和线程池
- Android的线程和线程池
- Android的线程和线程池(一)
- Android的线程和线程池
- Android的线程和线程池
- Android的线程和线程池
- Android的线程和线程池
- Android的线程和线程池
- Android 的线程和线程池
- Android的线程和线程池
- Android的线程和线程池
- Android的线程和线程池
- Android 的线程和线程池
- String,StringBuffer,StringBuilder之间的异同
- Java抓取网页数据(原网页+Javascript返回数据)
- IOS控件系列--对象池模式的应用--使用UIScrollView自定义设计滚动列表(UITableView、UICollectionView)(Swift版)
- [企业管理]关于管理
- Jquery获取File input数据
- android面试-Android的线程和线程池
- 创投日报:10月24日收录投融资项目15起
- 差分分组合作协同进化MATLAB代码
- it工程师常用英文自我介绍常用用语
- ubuntu 服务器自动安装
- Unique Paths:寻径问题
- UVa10892
- SwingWorker类解析
- C6748EDMA_GPIO_中断学习笔记