美文网首页
Kotlin协程

Kotlin协程

作者: YC1995 | 来源:发表于2020-06-09 19:25 被阅读0次
    协程是什么?

    协程本质是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协程

          本文链接:https://www.haomeiwen.com/subject/kvpetktx.html