kotlin协程async与await

news2024/11/24 20:07:50

kotlin协程async与await

import kotlinx.coroutines.*
import kotlin.system.measureTimeMillis

fun main() {
    val time = measureTimeMillis {
        runBlocking {
            /**
             * async 是 CoroutineScope 扩展函数,async 和 launch 的区别在于async 可以返回协程结果,而 launch 不能。
             * async默认值 CoroutineStart.DEFAULT 协程在声明同时就被启动(实际上还需被调度执行,但可认为是立即就执行)
             * CoroutineStart.LAZY 不主动启动协程,直到主动调用async.await()或async.satrt()后才启动(懒加载模式)
             * a.await() + b.await()导致两个协程顺序执行
             */

            val a = async(start = CoroutineStart.LAZY) {
                delay(2000)
                1
            }

            val b = async(start = CoroutineStart.LAZY) {
                delay(3000)
                2
            }

            /* 打破CoroutineStart.LAZY懒加载,协程立即投入执行。
            a.start()
            b.start()
             */
            println(a.await() + b.await())
        }
    }

    println(time)
}

输出:

3
3072

https://zhangphil.blog.csdn.net/article/details/129265638https://zhangphil.blog.csdn.net/article/details/129265638

kotlin协程、线程切换,函数方法委托_zhangphil的博客-CSDN博客runBlocking 内部启动的3个协程做耗时操作,从输出可以看到3个协程交叉并发执行,runBlocking 会等到3个协程执行结束后才退出,输出结果有明确先后顺序。一般编程的技法,比如,在Android中,假设在主线程中实现了一个函数,但该函数是耗时操作,毫无疑问,需要将这个函数的实现切入非主线程中操作,那么可以设计一种托管的函数,在托管的函数里面干脏活,处理完成后,把结果抛到主线程。结果1-a: 5 - tid:22。结果1-b: 5 - tid:24。结果2-a: 9 - tid:22。https://blog.csdn.net/zhangphil/article/details/130161705

https://zhangphil.blog.csdn.net/article/details/129250518https://zhangphil.blog.csdn.net/article/details/129250518

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/552613.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【002hive基础】hive的库、表与hdfs的组织逻辑

文章目录 一. 数据的组织形式1. hive数据库2. hive表2.1. 内部表和外部表2.2. 分区表与分桶表 3. 视图 二. 底层储存 一. 数据的组织形式 1. hive数据库 hive将不同功能模块的数据,存储在不同的数据库中,在hdfs中以文件夹的形式显示。 2. hive表 2.1.…

Excel统计函数AVEDEV,稳住我们能赢

你的关注,是我最大的动力!你的转发,我的10W!茫茫人海有你的支持,给我无限动力。 1、AVEDEV函数。 (1)说明。 返回一组数据点到其算术平均值的绝对偏差的平均值。 AVEDEV函数是对一组数据中变化…

Linux---phy外设调试

文章目录 一、phy设备概述二、内核驱动配置与设备树添加三、其他补充 一、phy设备概述 我们知道在计算机网络上有一个OSI 7层模型: 应用层:网络服务与最终用户的一个接口。 协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP 表…

服务(第二十七篇)squid-传统、穿透、反向代理

squid代理服务器: 主要提供缓存加速、应用层过滤控制的功能。 代理的工作机制: 1、代替客户机向网站请求数据,从而可以隐藏用户的真实IP地址。 2、将获得的网页数据(静态 Web 元素)保存到缓存中并发送给客户机&#x…

【Anaconda+Pytorch+DGL】安装+配置详细过程

文章目录 Anaconda安装1、进入[Anaconda官网](https://www.anaconda.com/)下载,下载完成后安装指令默认直到完成安装。2、进入Anaconda Prompt,使用conda指令来为不同的版本创建单独的环境: Pytorch安装1、打开NVIDIA控制面板,帮助…

Python+Yolov5水稻病害侦测识别

程序示例精选 PythonYolov5水稻病害侦测识别 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<PythonYolov5水稻病害侦测识别>>编写代码&#xff0c;代码整洁&#xff0c;规则&am…

gcc/g++ 、Make/Makefile、CMake/CMakeLists.txt、qmake关系简述

1、gcc与g 首先来了解下编译器的主要工作流程&#xff1a; 源码&#xff08;Source Code&#xff09;>> 预处理器&#xff08;Preprocessor&#xff09;>> 编译器&#xff08;Compiler&#xff09; >> 汇编程序&#xff08;Assembler&#xff09;>> …

深度学习踩坑经验沉淀【持续更新】

背景 在深度学习炼丹过程中&#xff0c;总会遇到各种奇怪问题&#xff0c;这个时候总会在csdn和知乎平台找到答案&#xff0c;那每次遇到的问题是解决了&#xff0c;但没有记录起来&#xff0c;确实太可惜&#xff0c;因为未来某个时间或者某个人会遇到类似问题&#xff0c;所…

HBase应用场景和最佳实践

HBase 作为 Apache 基金会的 Hadoop 项目的一部分&#xff0c;将 HDFS 作为文件存储系统&#xff0c;使用 MapReduce 进行分布式的数据批量处理&#xff08;非实时数据批量处理&#xff09;、利用Zookeeper提供协同管理服务&#xff0c;为 Hadoop 提供海量数据管理服务&#xf…

ROS学习(5)——话题消息与服务

节点之间的消息通信分为几种形式&#xff1a; 话题(topic):单向消息发送/接收方式服务(service):双向消息请求/响应方式动作(action):双向消息目标(goal)/结果(result)/反馈(feedback)方式参数服务器(参数共享模式) 种类区别话题异步单向连续单向的发送/接收数据的情况服务同步…

【重生之我是蜘蛛侠】手把手教你用python爬虫,跟着做就好了

&#x1f4af; 博客内容&#xff1a;【LeetCode训练营】用栈来实现队列用队列来实现栈 详解 &#x1f600; 作  者&#xff1a;陈大大陈 &#x1f680; 个人简介&#xff1a;一个正在努力学技术的准前端&#xff0c;专注基础和实战分享 &#xff0c;欢迎私信&#xff01; &am…

高可用架构之异地多活

大家好&#xff0c;我是易安&#xff01; 当谈到架构的高可用时&#xff0c;无论是高可用计算架构&#xff0c;还是高可用存储架构&#xff0c;其本质的设计目的都是为了解决部分服务器故障的场景下&#xff0c;如何保证系统能够继续提供服务。但在一些极端场景下&#xff0c;有…

MySQL高级篇第一天

目录 一、索引 二、索引结构 三、索引分类 四、索引语法 五、索引设计原则 六、视图 七、存储过程与概述 八、触发器 九、总结 一、索引 &#xff08;一&#xff09;索引概述 索引是一种能够帮组Mysql高效的从磁盘上查询数据的一种数据结构&#xff0c;这些数据结构以某…

Life of a Packet in Kubernetes - Calico网络进阶(注解版)

目录 Topics — Part 2 CNI Requirements BIRD (BGP) ConfD Felix Routing Modes IP-in-IP (Default) NoEncapMode VXLAN Demo — IPIP and UnEncapMode Demo — VXLAN Disclaimer References As we discussed in Part 1, CNI plugins play an essential role in …

【面试题】Redis过期删除与内存淘汰

文章目录 Redis过期删除策略&#x1f64e;‍♂️面试官&#xff1a;如何设置key的过期时间&#xff1f;&#x1f64e;‍♂️面试官&#xff1a;什么是Redis过期删除策略&#xff1f;&#x1f64e;‍♂️面试官&#xff1a;过期的key存放到哪里/如何判断key是否过期&#xff1f;…

又到了择业的时候

前言 记得2020年的时候&#xff0c;第一次买房背上贷款&#xff0c;一共一百多万连利息将近两百万&#xff0c;突然就有了危机感&#xff0c;不自觉的会考虑如果我的人生有什么重大变故&#xff0c;我的家人会怎么办&#xff1f;他们承担每个月的房贷月供吗&#xff1f;还是被…

ciscn_2019_es_2

小白垃圾做题笔记&#xff0c;不及建议阅读。 声明&#xff0c;exp来自网络&#xff0c;调试过程自己调试&#xff0c;对于题目的理解仅供参考。由于本人也是小白&#xff0c;且pwn全靠自己摸索&#xff0c;所以有很多理解不到位的地方。如有错误&#xff0c;欢迎指正。 1.做…

新星计划2023【网络应用领域基础】——————Day1

网络应用基础讲解 前言 什么是网络&#xff1f; 什么是网络&#xff0c;网络是什么&#xff1f;能为我们做什么&#xff1f;带着疑问博主一一给你解决 这一章我将带你了解古代人是如何利用“网络”通信的&#xff0c;网络的发展史&#xff0c;osi七层模型&#xff0c;带你了解T…

【2023/05/21】simula

Hello&#xff01;大家好&#xff0c;我是霜淮子&#xff0c;2023倒计时第16天。 本文将讨论一个广泛关注的话题&#xff0c;即在信息安全领域中如何使用Simula工具进行攻击模拟和威胁情报分析。在这篇文章中&#xff0c;我们将介绍Simula的概念、原理和应用&#xff0c;评价其…

RK3568平台开发系列讲解(驱动基础篇)RK平台RTC的使用

🚀返回专栏总目录 文章目录 一、HYM8563模块二、HYM8563模块三、接口使用3.1 sysfs 接口3.2 procfs 接口3.3 ioctl 接口沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将对RK RTC的使用进行学习。 一、HYM8563模块 ROC-RK3568-PC开发板采用HYM8563作为RTC(Rea…