前言
在专栏之前的文章中,我们了解了并发、线程、线程安全、线程池等多线程开发的概念。本篇文章,我们来梳理一下在Android开发中我们面临的多线程开发中常见的应用场景和解决方案。
应用场景
资源复用和优化
- 并发控制与线程池的使用
为了优化资源利用和提高应用性能,需要合理控制应用内的并发数量,使用线程池来执行耗时任务已提高资源的复用。- CPU密集型任务:这类任务消耗较多的CPU资源,因此执行此类任务的线程池线程数量不宜过多。 例如:
- 复杂的数学计算
- 大量的数据处理转换
- 压缩,编解码
- 加解密运算
- IO密集型任务:这类任务对CPU资源占用较少,为了及时响应,可以设置较多的线程数。例如:
- 网络请求
- 数据库的增删改查
- 文件的读写
- CPU密集型任务:这类任务消耗较多的CPU资源,因此执行此类任务的线程池线程数量不宜过多。 例如:
切线程
- 主线程与子线程
在Android中,有一个专门用于渲染UI的线程,我们称之为主线程,也叫做UI线程- 在主线程中,我们不能处理耗时任务,以免出现卡顿或者ANR的情况,所以,耗时操作需要切换到其他线程去执行,执行完毕后再切回到主线程更新UI。
- 从主线程切换到子线程比较简单,创建一个线程或者直接交给线