Kotlin 协程
给自己看系列
这次只是记录一下学习协程的简单笔记,只记录基本用法,其作用
runBlocking:T
runBlocking 阻塞当前线程,直到协程执行结束。
launch:Job
返回 Job类型对象,Job对应着一个借口,包含了常用方法
// TODO 需要补充下,方法的文字说明
isActive
isCancelled
isComleted
cancel()
join()
launch(...)方法是CoroutineScope的一个拓展函数,方法内包含三个参数
-
协程上下文:主要作用为线程切换, 调度器: 用来确定那些线程用于协程执行,以下:
- Dispatcher.Main: 使用这个调度器在Android主线程上运行一个协程。可用来更新UI,在UI线程中执行
- Dispatcher.IO: 这个调度器被优化在主线程之外执行磁盘或者网络I/O。在线程池中执行
- Dispatcher.Default: 在主线程之外执行cpu密集型的工作。例如对列表进行排序和解析json,在线程池中执行
- Dispatcher.Unconfined: 在调用的线程直接执行。
-
协程启动模式
启动模式 作用 DEFALUT 默认的模式,立即执行协程体 LAZY 只有在需要的情况下执行 ATOMIC 立即执行协程体,但是在开始运行之前无法取消 UNDISPATCHED 立即在当前线程执行携程提,知道第一个suspend调用 -
协程体
一个用suspend关键字修饰的一个无参,无返回值的函数类型.被修饰的函数成为挂起函数,与之对应的关键字为 resume(恢复),注意:挂起函数只能在协程中和其他挂起函数中调用,不能在其他地方使用。
async:Deferred
async跟launch的用法基本一样。 区别在于:async的返回值是Deferred,async 支持并发,使用并发时,一般都跟着await关键字一起使用。