Android多线程综述¶
更新日期: 2021-9-12
- 2021-9-26 协程
- 2021-9-12 更新图
- 2021-9-11 更新线程池,WorkManager介绍
- 2021-9-6 创建文档
介绍Android应用开发中的多线程。涉及Thread、Handler、线程池、WorkManager等。
多线程介绍¶
操作系统可以在同一时刻运行多个程序。例如一边播放音乐,一边下载文件和浏览网页。操作系统将cpu的时间片分配给每一个进程,给人一种并行处理的感觉。 一个多线程程序可以同时执行多个任务。通常,每一个任务称为一个线程(thread),它是线程控制的简称。可以同时运行一个以上线程的程序成为多线程程序(multithreaded)。 实际应用中,多线程非常有用。例如应用一边处理用户的输入指令,一遍联网获取数据。
Handler¶
Android开发中我们可以直接使用Thread,也可以使用Handler。
Handler在Android开发中是一个比较常用的工具。一个Handler允许发送和处理Message(任务),通过关联线程的MessageQueue执行Runnable对象。有些定时任务也可以用它来执行。
每个Handler实例都和一个单独的线程及其消息队列绑定。可以将一个任务切换到Handler所在的线程中去执行。一个用法就是子线程通过Handler更新UI。
线程池¶
有大量异步任务的时候,可以考虑使用线程池。需要执行大量异步任务的时候,减轻每个异步任务的调用开销,提高性能。另外它还能够限制和管理子线程。
ThreadPoolExecutor提供了很多参数,方便开发者调控。线程池的设计者建议开发者使用以下几个工厂方法,Android中主要有5种
newCachedThreadPool()
不限制数量的线程池,能自动回收线程newFixedThreadPool(int nThreads)
固定数量的线程池newSingleThreadExecutor()
单一的子线程newScheduledThreadPool(int corePoolSize)
能执行延时任务或者周期性任务newWorkStealingPool()
工作窃取线程池
WorkManager¶
WorkManager提供了任务调度功能,我们可以对工作进行标记或命名。WorkManager可以在子线程中执行任务,但用法不仅限于多线程。更在于工作调度。
✅ WorkManager使用入门 ✅ 工作约束,延迟与查询工作
协程¶
在Android中使用Kotlin协程。也能达到线程调度的效果。单个线程上可运行多个协程。协程支持挂起,不会使正在运行协程的线程阻塞。挂起比阻塞节省内存,且支持多个并行操作。许多Jetpack库都包含提供全面协程支持的扩展。某些库还提供自己的协程作用域,可用于结构化并发。
✅ Android Kotlin协程入门 ✅ Kotlin协程入门
本站说明
一起在知识的海洋里呛水吧。广告内容与本站无关。如果喜欢本站内容,欢迎投喂作者,谢谢支持服务器。如有疑问和建议,欢迎在下方评论~