Kotlin协程CoroutineScope异步async取消cancel等待await的任务

2023-09-20 23:15:24

Kotlin协程CoroutineScope异步async取消cancel等待await的任务

 

import kotlinx.coroutines.*

fun main(args: Array<String>) {
    runBlocking {
        val mScope = CoroutineScope(Dispatchers.IO).async {
            println("->")
            delay(999999)
            println("<-")

            "done" //async返回的结果,可以在 mScope.await() 收到。
        }

        CoroutineScope(Dispatchers.IO).launch {
            println("await...")
            val result = mScope.await()
            println(result)
        }

        delay(2000)

        println("cancel...")
        mScope.cancel()
        println("cancel!")
    }

    println("end")
}

 

9e9c172303984bcdbaeec4fef00fd24e.png

 

 

 

 

kotlin协程async与await_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/129268399

kotlin协程coroutineScope_zhangphil的博客-CSDN博客coroutineScope 创建独立协程作用域,直到所有启动的协程都完成后才结束自己。runBlocking 和 coroutineScope 很像,它们都需要等待内部所有相同作用域的协程结束后才会结束自己。两者主要区别是: runBlocking 阻塞当前线程,而 coroutineScope不会,coroutineScope会挂起并释放底层线程供其它协程使用。kotlin协程coroutineScope。https://blog.csdn.net/zhangphil/article/details/129265638kotlin协程Job、CoroutineScope作用域,Android_zhangphil的博客-CSDN博客一般编程的技法,比如,在Android中,假设在主线程中实现了一个函数,但该函数是耗时操作,毫无疑问,需要将这个函数的实现切入非主线程中操作,那么可以设计一种托管的函数,在托管的函数里面干脏活,处理完成后,把结果抛到主线程。结果1-a: 5 - tid:22。一般编程的技法,比如,在Android中,假设在主线程中实现了一个函数,但该函数是耗时操作,毫无疑问,需要将这个函数的实现切入非主线程中操作,那么可以设计一种托管的函数,在托管的函数里面干脏活,处理完成后,把结果抛到主线程。https://blog.csdn.net/zhangphil/article/details/131096325kotlin用CoroutineScope启动协程async等待结果返回_zhangphil的博客-CSDN博客一般编程的技法,比如,在Android中,假设在主线程中实现了一个函数,但该函数是耗时操作,毫无疑问,需要将这个函数的实现切入非主线程中操作,那么可以设计一种托管的函数,在托管的函数里面干脏活,处理完成后,把结果抛到主线程。结果1-a: 5 - tid:22。一般编程的技法,比如,在Android中,假设在主线程中实现了一个函数,但该函数是耗时操作,毫无疑问,需要将这个函数的实现切入非主线程中操作,那么可以设计一种托管的函数,在托管的函数里面干脏活,处理完成后,把结果抛到主线程。https://blog.csdn.net/zhangphil/article/details/129270875kotlin协程并发/并行与串行互相切换,CoroutineScope与await_kotlin协程 串行_zhangphil的博客-CSDN博客runBlocking 内部启动的3个协程做耗时操作,从输出可以看到3个协程交叉并发执行,runBlocking 会等到3个协程执行结束后才退出,输出结果有明确先后顺序。一般编程的技法,比如,在Android中,假设在主线程中实现了一个函数,但该函数是耗时操作,毫无疑问,需要将这个函数的实现切入非主线程中操作,那么可以设计一种托管的函数,在托管的函数里面干脏活,处理完成后,把结果抛到主线程。结果1-a: 5 - tid:22。结果1-b: 5 - tid:24。结果2-a: 9 - tid:22。_kotlin协程 串行https://blog.csdn.net/zhangphil/article/details/130794990

 

更多推荐

【深度学习】快速部署ONNX模型【入门】

【深度学习】快速部署ONNX模型【入门】提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论文章目录【深度学习】快速部署ONNX模型【入门】前言搭建打包环境打包exe文件总结前言之前的内容已经尽可能简单、详细的介绍CPU【Pytorch2ONNX】和GPU【Pytorch2ONNX】俩种模式下Pytor

【Linux入门】---Linux权限管理详解

文章目录1.shell命令以及运行原理2.linux用户分类su指令切换用户3.Linux权限管理3.1Linux文件访问者3.2文件类型和访问权限3.3文件权限值的表示方法3.4文件访问权限的相关设置方法chmod指令--权限修改方法①chmod指令--权限修改方法②chown指令chgrp指令umask指令file

基于Gradio/Stable Diffusion/Midjourney的AIGC自动图像绘画生成软件 - Fooocus

0.参考本项目:GitHub-lllyasviel/Fooocus:Focusonpromptingandgenerating作者:LvminZhang​编辑lllyasviel另一杰作ContorlNethttps://github.com/lllyasviel/ControlNet模型:https://huggin

登录认证方式汇总,例如ThreadLocal+拦截器+Redis、JWT

登录方式汇总先讲讲传统的登录方式1.Cookie方案用cookie作为媒介存放用户凭证。用户登录系统之后,会返回一个加密的cookie,当用户访问子应用的时候会带上这个cookie,授权以解密cookie并进行校验,校验通过后即可登录当前用户。缺点:Cookie不安全,Cookie是存到客户端的,攻击者可以伪造Cook

设计模式概述

什么是设计模式?“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动“。——ChristopherAlexander软件设计固有的复杂性:“建筑商从来不会去想给一栋已建好的100层高的楼房底下再新修一个小地下室——这样做花费极大而且注定要失败

爬虫异常处理实战:应对请求频率限制和数据格式异常

目录一:请求频率限制的处理1、设置请求间隔时间2、使用随机化延迟3、添加爬虫IP和用户代理二:数据格式异常的处理1、异常数据的过滤2、错误信息的记录3、动态调整解析规则总结在爬虫编程中,我们经常会遇到各种异常情况,比如请求频率限制和数据格式异常。这些异常可能会让我们的爬虫任务陷入困境,因此,学会处理这些异常就显得尤为重

威胁的数量、复杂程度和扩散程度不断上升

Integrity360宣布了针对所面临的网络安全威胁、数量以及事件响应挑战的独立研究结果。数据盗窃、网络钓鱼、勒索软件和APT是最令人担忧的问题这项调查于2023年8月9日至14日期间对205名IT安全决策者进行了调查,强调了他们的主要网络安全威胁和担忧,超过一半的受访者(55%)认为数据盗窃是最大的担忧,勒索软件位

linux--进度条

目录搭建环境版本1版本2版本3本篇文章我们将来尝试写一个简单的小程序–进度条。搭建环境在这之前,我们要先搭建好一个框架,如下:先依次创建好一个头文件(pb.h)用以声明和定义宏,一个源文件(pb.c)用于书写进度条源代码,一个源文件(main.c)用于测试以及后续搭建实际的场景,以及makefile。makefile:

SpringAOP入门案例

packagecom.elf.spring.aop.aspectj;/***@author45*@version1.0*/publicinterfaceUsbInterface{publicvoidwork();}packagecom.elf.spring.aop.aspectj;importorg.springfra

故障注入实验:了解如何使用Chaos Engineering的方法,在服务网格中进行故障注入实验

🌷🍁博主猫头虎带您GotoNewWorld.✨🍁🦄博客首页——猫头虎的博客🎐🐳《面试题大全专栏》文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐🌊《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大

4.docker容器编排(docker compose 与 docker swarm)

本文目录1.容器编排2.DockerCompose1.DockerCompose安装2.DockerCompose示例1.使用docker-compose启动nginx2.dockercompose常用命令3.校验docker-compose.yml是否有错误4.创建服务,启动容器5.弹性伸缩<扩缩容>3.Docker

热文推荐