(五)协程 Coroutine

作者: onestravel | 来源:发表于2018-12-13 15:32 被阅读0次

一、协程的概念

  • 协作程序,解决异步问题
  • 应用层完成调度
  • 常见的支持协程的语言如: lua,C#

二、协程要解决什么问题

例如:

现在要开始协程啦{
    //现在在协程里面了
    //花括号内的代码可以是一段运行在UI线程的代码
    val view = ...  //初始化视图
    val image =    //异步加载图片,运行在其他子线程,执行到这一步就挂起,等到子线程返回图片,继续执行,不会阻塞线程
    view.setImage(image)
}
  • 异步代码想同步代码一样直观
  • 简化异步代码异常处理
  • 轻量级的并发方案

三、kotlin如何支持协程

  • 编译器对 suspend 函数的编译支持
  • 标准库的基本API支持
  • kotlinx.coroutine 应用级的支持

四、协程的基本API

  • createCoroutine:创建协程
  • startCoroutine:启动协程
  • suspendCoroutine:挂起协程
  • Continuation 接口:运行控制类,负责结果和异常的返回
  • CoroutineContext 接口:运行上下文,资源持有,运行调度
  • ContinuationInterceptor 接口:协程控制拦截器,可用来处理协程调度

五、协程的执行流程

  • 协程被编译成状态机
  • suspend 函数即状态转移


    image.png

六、协程的运行结果

  • 正常的结果通过 resume 返回
  • 异常通过 resumeWithException 抛出


    image.png

七、kotlinx.coroutine 框架介绍

  • Kotlin 官方协程应用框架
  • 提供大量对协程API的封装
主要模块 说明
kotlin-coroutines-core 核心库
kotlin-coroutines-jdk8 Java8 支持库
kotlin-coroutines-nio 异步IO库
kotlin-coroutines-reactive Reactive Streams 支持
kotlin-coroutines-reactor Reactor 支持
kotlin-coroutines-rx1 RxJava 1.x 支持
kotlin-coroutines-rx2 RxJava 2.x 支持
kotlin-coroutines-android Android UI 支持
kotlin-coroutines-javafx JavaFx UI 支持
kotlin-coroutines-swing Swing UI 支持

上一篇:(四)Kotlin 领域特定语言 DSL

下一篇:(六)Kotlin 与 Java 混合开发

相关文章

  • (五)协程 Coroutine

    一、协程的概念 协作程序,解决异步问题 应用层完成调度 常见的支持协程的语言如: lua,C# 二、协程要解决什么...

  • python异步协程(aiohttp,asyncio)

    python异步协程 环境:python3.7.0 协程 协程,英文叫做 Coroutine,又称微线程,纤程,协...

  • Kotlin协程探索(一) (Coroutine)

    Kotlin协程探索 (一)(Coroutine) PS:以下协程都特指Kotlin协程;且期望大家大概知道协程的...

  • 我的Kotlin 学习之路(六)Kotlin之coroutine

    Coroutine -> 协程不同于线程,协程不占用CPU,它只占用内存来处理耗时操作。Coroutine的原理有...

  • Kotlin协程

    协程(Coroutine) 协程引入 异步加载图片 普通代码:val view = ...loadImageAsy...

  • Python 协程

    仅供学习,转载请注明出处 协程 协程,又称微线程,纤程。英文名Coroutine。 协程是啥 协程是python个...

  • Python并发编程——协程

    摘要:Python,协程,gevent 协程基本概念 协程,又称微线程,纤程。英文名Coroutine,是Pyth...

  • JVM配置项-Dkotlinx.coroutines.debug

    背景介绍 最近在学习Kotlin的Coroutine(协程)部分,在 Coroutine Context and ...

  • 协程

    1.协程 协程,又称微线程,纤程。英文名Coroutine。 1.1 协程是什么 协程是python个中另外一种实...

  • 协程介绍

    协程 协程,又称微线程,纤程。英文名Coroutine。 1.协程是什么? 协程是python个中另外一种实现多任...

网友评论

    本文标题:(五)协程 Coroutine

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