Skip to content

Android多线程综述

更新日期: 2021-9-12
  • 2021-9-26 协程
  • 2021-9-12 更新图
  • 2021-9-11 更新线程池,WorkManager介绍
  • 2021-9-6 创建文档

介绍Android应用开发中的多线程。涉及ThreadHandler、线程池、WorkManager等。

多线程介绍

操作系统可以在同一时刻运行多个程序。例如一边播放音乐,一边下载文件和浏览网页。操作系统将cpu的时间片分配给每一个进程,给人一种并行处理的感觉。 一个多线程程序可以同时执行多个任务。通常,每一个任务称为一个线程(thread),它是线程控制的简称。可以同时运行一个以上线程的程序成为多线程程序(multithreaded)。 实际应用中,多线程非常有用。例如应用一边处理用户的输入指令,一遍联网获取数据。

多线程介绍

Handler

Android开发中我们可以直接使用Thread,也可以使用Handler

Handler在Android开发中是一个比较常用的工具。一个Handler允许发送和处理Message(任务),通过关联线程的MessageQueue执行Runnable对象。有些定时任务也可以用它来执行。

每个Handler实例都和一个单独的线程及其消息队列绑定。可以将一个任务切换到Handler所在的线程中去执行。一个用法就是子线程通过Handler更新UI。

Handler使用

线程池

有大量异步任务的时候,可以考虑使用线程池。需要执行大量异步任务的时候,减轻每个异步任务的调用开销,提高性能。另外它还能够限制和管理子线程。

ThreadPoolExecutor提供了很多参数,方便开发者调控。线程池的设计者建议开发者使用以下几个工厂方法,Android中主要有5种

  • newCachedThreadPool() 不限制数量的线程池,能自动回收线程
  • newFixedThreadPool(int nThreads) 固定数量的线程池
  • newSingleThreadExecutor() 单一的子线程
  • newScheduledThreadPool(int corePoolSize) 能执行延时任务或者周期性任务
  • newWorkStealingPool() 工作窃取线程池

线程池使用

WorkManager

WorkManager提供了任务调度功能,我们可以对工作进行标记或命名。WorkManager可以在子线程中执行任务,但用法不仅限于多线程。更在于工作调度。

WorkManager使用入门 工作约束,延迟与查询工作

协程

在Android中使用Kotlin协程。也能达到线程调度的效果。单个线程上可运行多个协程。协程支持挂起,不会使正在运行协程的线程阻塞。挂起比阻塞节省内存,且支持多个并行操作。许多Jetpack库都包含提供全面协程支持的扩展。某些库还提供自己的协程作用域,可用于结构化并发。

Android Kotlin协程入门 Kotlin协程入门

作者: rustfisher.com | rf.cs@foxmail.com
示例: AndroidTutorial Gitee, Tutorial Github
本文链接: https://www.an.rustfisher.com/android/thread/android-thread-survey/
一家之言,仅当抛砖引玉。如有错漏,还请指出。如果喜欢本站的内容,还请支持作者。也可点击1次下方的链接(链接内容与本站无关),谢谢支持服务器