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) {
     //..
   }
}

协程写法上和普通代码顺序一样

suspend关键字

提醒的作用(函数创建者对函数使用者的提醒,这是一个耗时的函数)
1.耗时的操作需要定义挂起函数
2.函数里面的代码用withContext去包裹代码

非阻塞式挂起

挂起就是一个稍后会自动切回来的线程调度操作
协程的本质还是线程
在协程中可以用看起来是阻塞的代码写出非阻塞的操作
挂起函数挂起的是协程,保证协程后面的代码在进入挂起函数之后,就被挂起,不会继续往下执行,只有等到挂起函数执行完毕之后才会继续往下执行。挂起函数保证了协程内部的顺序执行。

你可能感兴趣的:(Kotlin协程)