Kotlin 协程

协程是可以由程序自行控制挂起 恢复的程序
协程可以用来实现多任务的协作执行
协程可以用来解决异步任务控制流的灵活转移

可以让异步代码同步化
可以降低异步程序的设计复杂度

异步逻辑 同步写法

协程的分类
按调用栈

有栈协程:每个协程会分配单独的调用栈 类似线程的调用栈
无栈协程 挂起点状态通过闭包或者对象保存

按调用关系

对称协程:调度权可以转移给任意协程 协程之间对等关系
非对称协程 调度权只能转移给调用自己的协程 协程之间存在父子关系

Kotlin协程的基本要素

挂起函数 suspend修饰的函数,只能在其他挂起函数或者协程中使用,
				挂起函数调用同时包含了协程“挂起”的语义
				挂起函数返回时则包含了协程“恢复的”语义
恢复:Continutation
	suspend fun  bar(a:Int):String{//方法2是方法1编译后的 continuation的泛型参数是方法的返回类型
return "hello"
}

fun  bar1(a:Int,continuation: Continuation<String>):Any{//any在没有挂起时返回函数返回值,在挂起时返回挂起标志
 	return "hello"												//
}

协程的创建

协程是一段可执行的程序 需要一个函数  还需要一个API

协程上下文

协程执行过程中需要携带数据
索引是CoroutinContext,Key
元素是CoroutinContext.Element

拦截器
 	拦截器ContinuationIneterceptor是一类协程上下文元素
 	可以对协程上下文所在协程的Continuation进行拦截

拦截器负责进行线程的切换
拦截器负责进行线程的切换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值