【Kotlin 协程】协程的挂起和恢复 ② ( 协程挂起 和 线程阻塞 对比 )
创始人
2024-02-13 09:11:09
0

文章目录

  • 一、协程挂起 和 线程阻塞 对比
    • 1、协程挂起
    • 2、线程阻塞
    • 3、挂起和阻塞对 UI 的影响
    • 4、挂起分析





一、协程挂起 和 线程阻塞 对比



挂起是协程中的概念 , 只能在协程中使用 ;

阻塞是线程中的概念 , 可以在主线程和子线程中使用 ;


1、协程挂起


协程 挂起 操作 : 在协程中使用 delay 函数 , 挂起 20 秒时间 , 然后 20 秒后更新 UI ; delay 函数是 挂起 suspend 函数 ;

// 创建协程
GlobalScope.launch(Dispatchers.Main) {delay(20000)// 主线程更新 UILog.i("MainActivity", "GlobalScope : 主线程更新 UI")
}

2、线程阻塞


主线程 阻塞 操作 : 在主线程 中使用 Thread.sleep 函数 , 阻塞 20 秒时间 , 然后 20 秒后更新 UI ;

// 主线程阻塞
Thread.sleep(20000)
// 主线程更新 UI
Log.i("MainActivity", "GlobalScope : 主线程更新 UI")

3、挂起和阻塞对 UI 的影响


协程 挂起 操作 不会出现 阻塞 UI 刷新的情况 , 挂起的 20 秒不影响 UI 刷新显示 ;

但是如果将主线程阻塞 , UI 不再刷新 , 会出现 ANR 崩溃异常 ;


图形化 GUI 系统中 , 一般都在主线程中更新 UI , 主线程中都有一个无限循环 , 不断刷新界面 , 如果在主线程中执行了耗时操作 , 就会影响到界面的刷新 , 出现漏帧 , ANR 崩溃异常 ;


4、挂起分析


协程中有挂起操作 , 会将挂起点的状态保存 , 同时协程停止执行 , 等待挂起函数执行完毕后 , 协程继续执行 ; 相当于阻塞的是协程 , 不会阻塞主线程 ;

相关内容

热门资讯

山大地纬7月4日获融资买入26... 7月4日,山大地纬涨1.05%,成交额1.89亿元。两融数据显示,当日山大地纬获融资买入额2668....
力合微7月4日获融资买入817... 7月4日,力合微跌1.37%,成交额4983.63万元。两融数据显示,当日力合微获融资买入额817....
中科通达7月4日获融资买入22... 7月4日,中科通达跌0.52%,成交额3098.49万元。两融数据显示,当日中科通达获融资买入额22...
华阳变速7月4日获融资买入78... 7月4日,华阳变速跌3.90%,成交额6102.88万元。两融数据显示,当日华阳变速获融资买入额78...
狼蛛灭神鼠标是不是宏鼠标 狼蛛灭神鼠标是不是宏鼠标此款鼠标不支持自定义功能呢,所以设置不了哦
金迪克7月4日获融资买入42.... 7月4日,金迪克跌0.28%,成交额1168.35万元。两融数据显示,当日金迪克获融资买入额42.7...
深水规院7月4日获融资买入15... 7月4日,深水规院跌3.05%,成交额1.99亿元。两融数据显示,当日深水规院获融资买入额1546....
同辉信息7月4日获融资买入36... 7月4日,同辉信息(维权)涨8.42%,成交额5.95亿元。两融数据显示,当日同辉信息获融资买入额3...
我该不该和他谈恋爱? 我该不该和他谈恋爱?不要怕,不丢脸,你经常到他们班走走,引起他对你的注意,祝你成功,加油努力~我初三...
艾为电子7月4日获融资买入20... 7月4日,艾为电子跌1.91%,成交额1.46亿元。两融数据显示,当日艾为电子获融资买入额2002....