Android 的线程和线程池笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ITxiaodong/article/details/81106895

Android 中除了 Thread 之外能扮演线程的角色有很多如:AsyncTask 和 IntentService, HandlerThread

AsyncTask 底层用到了线程池,而 IntentServiceHandlerThread 底层则直接调用了线程。

AsyncTask 封装了线程池和 Handler,其主要是为了开发者在子线程中更新 UI ;

HandlerThread是一种具有消息循环的线程,在它的内部可以使用 Handler;

IntentService 是一个服务,系统对其进行封装,使其可以更方便的执行后台任务 IntentService 内部使用了 HandlerThread 来执行任务,当任务执行完成之后 IntentService 会自动退出。

从任务执行的角度来看, IntentService 更像是一种后台线程,但是 IntentService 又是一种服务,它不容易被系统杀死,所以可以保证任务能够一直执行。而如果只是后台进程,那么这个进程的优先级就会非常低,很容易被后台杀死。

在操作系统中,线程是操作系统调度的最小的单元,同时线程又是一种受限制的系统资源,即线程是不可能无限制的产生,并且线程的创建和销毁都会有相应的开销,所以在 Android 中为了避免线程的无限创建,因此有了线程池的概念,主要是通过 Executor 来派生特定类型的线程池,不同种类的线程池又具有各自的特性。

Android AysncTask 从源码角度简单理解它的使用限制原因

Android IntentService 从源码角度分析和简单使用

参考

《Android开发艺术探索》

猜你喜欢

转载自blog.csdn.net/ITxiaodong/article/details/81106895