Kotlin 协程笔记 再蹩一眼 (二) 挂起

1 suspend函数 挂起的不是线程,也不是函数  !而是挂起的协程块,将协程块切到另一个线程
2 协程块就是 
launch(Dispatchers.Main){ 
        \\ todo  在这里!!
} 里的代码复制代码

挂起的定位: 暂时切走脱离当前线程,执行完函数后再切回来

1 ************协程的挂起本质就是切线程 *************
2 基于线程而实现的一套更上层的工具API
3 只不过挂起函数执行完毕后,协程会稍后自动从新切回它原先的所在线程复制代码

从哪里挂起


先别看图,看懂下面的描述,再对应图里的代码bash

1 声明的suspend从当前线程(main)开始挂起,脱离当前执行它的的线程,协程块suspend里的代码就没有在当前线程跑了异步

2 当前线程( main )遇到suspend函数时  就等于跳过当前代码(suspend里的逻辑代码,suspend被挂起),而挂起的逻辑代码在它声明的指定线程里(IO)等待执行..。 async

3 执行完IO后,函数又会帮咱们自动切回到main线程,能够设置特殊的Dispathcers(调度器) ,不切回去。ide

4 Dispathcers 指定协程执行的线程 ,还能在suspned挂起函数执行完以后,自动再切回去函数

注意的地方是 ,挂起后 不是这个协程块停下来了!像异步分发工具

suspend 它的做用 

  • 起提醒做用    提醒你在协程块里调用挂起函数!   协程块是啥? 见顶部

并非声明它了 ,函数就立马挂起了,真正起决定的是里面声明相似 withContext(Dispathcers.IO)、async() 等函数里的底部代码post

async() 也是建立协程的函数ui


第一节笔记 juejin.im/post/5d8393…spa

视频课www.bilibili.com/video/av682… @扔物线 期待下一节协程讲课
线程

相关文章
相关标签/搜索