协程的非阻塞式挂起

协程提供了一种在主线程中非阻塞执行异步操作的方式。挂起实际上是协程在线程间切换的机制,如在withContext(Dispatchers.IO)中执行耗时操作,协程会挂起并切换到IO线程,完成后切回主线程,期间主线程可继续执行其他任务,实现高效资源利用。这种挂起并不影响主线程的连续性,使得代码看起来像是阻塞但实际上是非阻塞的。
摘要由CSDN通过智能技术生成

协程

协程就像Java中Excutor一样就是一套操作线程的API

挂起

挂起就是挂起协程本身,例如我们在一个协程中调用一个挂起函数fetchData,这个fetchData方法中通常都会写withContext(Dispatchers.IO){…},这个时候协程就被挂起了,当withContext中的代码执行完毕返回的时候协程会帮我们再把线程切回来。所以挂起其实也就是指切线程
如下所示:
在这里插入图片描述
在这里插入图片描述

非阻塞式挂起

当使用协程后我们的异步操作已经可以像平常写代码一样在main线程中一行一行的写,不同的是当执行到withContext(Dispatchers.IO){…}的时候协程被挂起然后切换到IO线程中,当耗时操作结束后协程再切回到main线程,而在这之间main线程中的后续代码将继续执行。这是协程所带来的另一个特性可以用看似阻塞的代码写出非阻塞的操作,不过话又说回来了,你挂起的时候都切到另一个线程去执行了当然不会影响到主线程代码的后续执行。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值