2.6 协程Couroutines的初步认知

协程Couroutines的初步认知

一、什么是Kotlin 协程

协程(Coroutine)就是协同程序,而Kotlin协程就是一个基于Java Thread API封装的工具包,帮助我们轻松的写出复杂的并发代码

kotlin协程相较于线程池,并没有什么性能上的优势

非阻塞式挂起没什么特别的,java子线程也同样是非阻塞式的

如果你熟悉Rxjava,你再对比一下协程,你会发现协程比Rxjava还好用

解决回调地狱的问题

二、Coroutines的优势、特点

  • 轻量

  • 实质,便于多线程开发

  • 线程池

  • 网络库支持,轻便优雅

三、知识点速览

常见协程函数

函数名简述特点
runBlocking:T启动的内部协程,会阻塞当前线程,直到block内的协程执行结束。常用的协程函数调用方式
launch:Job最常用的启动协程的方式;返回Job对象,可操作Job;不会阻塞当前调用线程;
async:Deferred类似于launch,启动异步;可用于多并发;await合并结果
  • CoroutineContext

    • Dispatchers.Main、

    • Dispatchers.IO、Dispatchers.default(在线程池中执行

    • Dispatchers.Unconfined

  • LauncherMode

    ModeValue
    default默认,立即执行协程
    lazy需要时执行
    atomic立即执行,操作原子化,开始前无法取消
    undispatched立即在当前线程执行,直到第一个suspend调用
  • suspend函数

    • suspend函数会将整个协程挂起,而不仅仅是这个suspend函数,也就是说一个协程中有多个挂起函数时,它们是顺序执行的

    • resume

    • 调用栈

  • Scope

    • UI

    • ViewModel

四、处理异步的方式

  • 线程

    • 常用,简便

    • 资源消耗

      数量受限

      平台支持(JS无线程)

      调试使用不便

  • 回调

    • 层次调用

    • 多重嵌套

      错误处理麻烦

  • Futures、 Promise

    • 编程优雅

    • 改变编程方式,如异常处理与循环作用等,在其中无效

      Api学习,平台差异

      返回类型限定promise

      异常处理复杂

  • Rx响应式扩展

    • 可观察流的设计思想,优雅便捷

    • 学习曲线

      Api

      行为难估

  • 协程

    • 易学、易用

    • jetpack,kotlin,aac,scope/vvm

    • 学习成本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值