Kotlin 协程

目录

一、什么是协程

二、创建协程

2.1 协程上下文(调度器)

2.2 启动方式

2.3 Job

三、suspend关键字

四、协程挂起与恢复


一、什么是协程

协程可理解为轻量级的线程,但其不是线程,而是基于线程的工具库。

协程的目的是减轻繁琐的异步操作,按同步编码习惯编写异步任务。

二、创建协程

launch:创建协程;

async:创建带返回值的协程,支持并发;

withContext:不创建新的协程,在指定协程运行;

runBlocking:类似 launch,但其 delay 方法会阻塞线程;

2.1 协程上下文(调度器)

Dispatchers.Main:当前协程在UI线程执行;

        在主线程使用不一定立即执行,因为是用Handler方式发送任务;

Dispatchers.IO:在线程池执行,可以发送网络请求或执行IO任务;

Dispatchers.Default:在线程池执行,可以执行CPU密集型运算;

Dispatchers.unconfined:在当前线程执行;

2.2 启动方式

Default:创建就启动;

Lazy:需要时才启动;

2.3 Job

协程构造方法返回值

job.start:启动协程

job.join:等待协程执行完毕

job.cancel:取消协程

三、suspend关键字

修饰函数,被修饰的函数称作挂起函数,表示在当前线程挂起该协程任务,转到挂起函数内的线程中执行,原线程可执行其他任务,如刷新UI等。这叫非阻塞式挂起

suspend修饰的函数只能在协程内或另一个挂起函数中调用。

四、协程挂起与恢复

协程内代码是顺序执行的,直到被挂起为止。

被挂起的协程不会继续执行,直到挂起结束且线程空闲时继续执行。

协程在哪个线程恢复,就在哪个线程继续执行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值