点击领取优惠~
390 字
2 分钟
关于协程中的挂起和阻塞有什么区别_
关于协程中的挂起和阻塞有什么区别?
首先,我们要理清两个概念:
- 挂起,就是一个稍后会被自动切回来的线程调度操作
- 阻塞,其实是线程中的概念,相当于我线程卡了,或者在主线中进行一些耗时的操作,你必须等待耗时任务结束才能继续执行,这就是我们人为认知的卡顿
两个概念,它们最大的区别就是协程中的挂起是非阻塞式的,只是它能用看起来阻塞的代码写出非阻塞的操作,简单来说就是可以自动来回的切线程,从而不会造成主线程的阻塞 他们会造成什么影响呢?我们试着直接从主线程中下载一百张图片然后显示界面列表中,这一看就是耗时操作吧,我们必须拿到图片后去再刷新界面UI,在图形化 GUI 系统中 , 一般都在主线程中更新 UI , 主线程中都有一个无限循环 , 不断刷新界面,所以我们也叫做UI线程,这时候主线程中执行了耗时操作,就会影响到界面刷新,出现掉帧,甚至直接ANR了;那如果我们将下载操作使用协程挂起了呢,在这段等待的时间内是不会影响UI刷新操作的,直到拿到结果再自动切换到UI线程去刷新界面数据
关于协程中的挂起和阻塞有什么区别_