跳转至

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协程入门

本站说明

一起在知识的海洋里呛水吧。广告内容与本站无关。如果喜欢本站内容,欢迎投喂作者,谢谢支持服务器。如有疑问和建议,欢迎在下方评论~

📖AndroidTutorial 📚AndroidTutorial 🙋反馈问题 🔥最近更新 🍪投喂作者

Ads