协程

概念

提示 协程不是进程也不是线程,而是一个特殊的函数。这个函数可以在某个地方被“挂起”,并且可以重新在挂起处外继续运行。所以说,协程与进程、线程相比并不是一个维度的概念。

一个进程可以包含多个线程,一个线程也可以包含多个协程。简单来说,在一个线程内可以有多个这样的特殊函数在运行,但是有一点必须明确的是:一个线程中的多个协程的运行是串行的。 如果是多核CPU,那多个进程或一个进程内的多个线程是可以并行运行的。但是在一个线程内协程 却绝对是串行的,无论CPU有多少个核毕竟协程虽然是一个特殊的函数,但仍然是一个函数。 一个线程内可以运行多个函数,但这些函数都是串行运行的。当一个协程运行时,其他协程必须被挂起。

协程调度器种类

1) Dispatchers.Main : UI 线程执行协程;
2)Dispatchers.IO : IO 线程执行协程;
3)Dispatchers.Default  : CPU 密集型线程执行协程;
4)Dispatchers.Unconfined : 构建完协程立刻在当前线程执行;

协程作用域(CoroutineScope)

1)GlobalScope,生命周期是process级别的,即使Activity或Fragment已经被销毁,协程仍然在执行;

2)MainScope,在Activity中使用,可以在onDestroy()中取消协程;

3)viewModelScope,只能在ViewModel中使用,绑定ViewModel的生命周期;

4)lifecycleScope,只能在Activity、Fragment中使用,会绑定Activity和Fragment的生命周期。

启动方式

1)runBlocking: T

2)launch: Job

3)async/await: Deferred

详情请看: https://juejin.cn/post/7088711680665845768

posted @   野生野鸡码农  阅读(104)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
历史上的今天:
2020-11-11 Android6.0 以上设置状态栏字体颜色
点击右上角即可分享
微信分享提示