| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Kotlin 协程的suspend关键字到底有什么作用?进来看实验 -> 正文阅读 |
|
[移动开发]Kotlin 协程的suspend关键字到底有什么作用?进来看实验 |
作者:> |
不久前收到一个粉丝的提问,今天深海就来通过实验告诉大家?suspend?关键字到底有什么用。 首先这是测试代码: build.gradle:
大概说一下这个代码做了什么: 开启一个线程,运行两个协程。 其中第一个协程调用了耗时方法 timeConsuming(),且该方法使用suspend修饰。 运行结果:?怎么样?是不是有些诧异? 当协程1中的耗时任务遇到阻塞后,竟然直接去执行协程外的任务了。 并且协程2执行完之后又接着执行了协程1中后续耗时任务。 suspend功能总结:? ? ?那么集合上诉运行结果,suspend的功能显而易见。 当携程遇到阻塞方法时,如果该方法由suspend修饰,那么当前携程将进入挂起状态, 线程将跳过已挂起的携程,继续执行后面的任务, 当前面携程挂起状态结束后,线程将继续执行被挂起的线程后续的任务。(前提是这时候线程还存活) 为什么代码中有 while (true) 这个无限循环?假如没这个循环的话,运行结果如下: 你会发现阻塞后的任务没有执行,因为线程死掉了。 这个 while (true) 可以保证线程不死,安卓主线程的 Handler原理亦是通过Loop的无限循环来保证主线程不死。 复制样例代码 运行出错?如果你的报错是这个的话: 这样解决: 好了,文章到这里就结束了,如果您有不同的见解或者有疑问的话欢迎到评论区留言。 如果您感觉深海写的不错的话,请给文章点个赞吧,感谢各位的支持! |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 18:53:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |