Kotlin协程

协程是什么? 协程本质是Kotlin官方提供的线程API(本质就是一个线程框架)
最基本的功能是并发
非阻塞式挂起 用同步的方式写异步的代码
协程指的是传递给lauch函数的那些代码。
lauch函数的意思是我要创建一个协程,并在指定线程上运行协程。

lauch(Dispatchers.IO) { val image = getImage(url) }

withContext函数,切到对应线程执行,执行完毕之后自动切回来
lauch(Dispatchers.Main) { withContext(Dispatchers.IO) { //.. } //.. withContext(Dispatchers.IO) { //.. } //.. }//也可以包在函数之外处理 lauch(Dispatchers.Main) { val result = getResult(url) //.. } suspend fun getResult(url : String) { withContext(Dispatchers.IO) { //.. } }

【Kotlin协程】协程写法上和普通代码顺序一样
suspend关键字 提醒的作用(函数创建者对函数使用者的提醒,这是一个耗时的函数)
1.耗时的操作需要定义挂起函数
2.函数里面的代码用withContext去包裹代码
非阻塞式挂起 挂起就是一个稍后会自动切回来的线程调度操作
协程的本质还是线程
在协程中可以用看起来是阻塞的代码写出非阻塞的操作
挂起函数挂起的是协程,保证协程后面的代码在进入挂起函数之后,就被挂起,不会继续往下执行,只有等到挂起函数执行完毕之后才会继续往下执行。挂起函数保证了协程内部的顺序执行。

    推荐阅读