CoroutineScope Dispatchers.IO异步操作async返回函数,Kotlin

CoroutineScope Dispatchers.IO异步操作async返回函数,Kotlin

Kotlin 复制代码
import kotlinx.coroutines.*

fun myFun(a: Int, b: Int, retFun: (sum: Int) -> Unit) {
    println("分支myFun开始... ${System.currentTimeMillis()}")
    val task = CoroutineScope(Dispatchers.IO).async(start = CoroutineStart.LAZY) {
        println("myFun delay... ${System.currentTimeMillis()}")
        delay(3000)
        println("myFun delay end ${System.currentTimeMillis()}")
        a + b
    }

    CoroutineScope(Dispatchers.IO).launch {
        println("myFun launch... ${System.currentTimeMillis()}")
        val sum = task.await()
        retFun(sum)
        println("myFun retFun ${System.currentTimeMillis()}")
    }
    println("分支myFun结束 ${System.currentTimeMillis()}")
}

fun main(args: Array<String>) {
    println("主流程开始 ... ${System.currentTimeMillis()}")
    myFun(1, 2) { sum ->
        println("主流程等待结果返回...")
        println("main : $sum ${System.currentTimeMillis()}")
        println("主流程结果返回")
    }
    println("主流程结束 ${System.currentTimeMillis()}")


    Thread.sleep(5000)
}

主流程开始 ... 1703757127994

分支myFun开始... 1703757127995

分支myFun结束 1703757128042

主流程结束 1703757128042

myFun launch... 1703757128045

myFun delay... 1703757128046

myFun delay end 1703757131050

主流程等待结果返回...

main : 3 1703757131052

主流程结果返回

myFun retFun 1703757131052

Process finished with exit code 0

相关推荐
一丝晨光8 小时前
Java、PHP、ASP、JSP、Kotlin、.NET、Go
java·kotlin·go·php·.net·jsp·asp
500了17 小时前
Kotlin基本知识
android·开发语言·kotlin
陈亦康2 天前
Armeria gPRC 高级特性 - 装饰器、无框架请求、阻塞处理器、Nacos集成、负载均衡、rpc异常处理、文档服务......
kotlin·grpc·armeria
奋斗的小鹰2 天前
kotlin 委托
android·开发语言·kotlin
Wency(王斯-CUEB)2 天前
【文献阅读】政府数字治理的改善是否促进了自然资源管理?基于智慧城市试点的准自然实验
android·kotlin·智慧城市
中游鱼2 天前
Visual Studio C# 编写加密火星坐标转换
kotlin·c#·visual studio
500了2 天前
kotlin协程
开发语言·python·kotlin
ChinaDragonDreamer4 天前
Kotlin:1.8.0 的新特性
android·开发语言·kotlin
IH_LZH4 天前
Kotlin:变量声明,null安全,条件语句,函数,类与对象
android·开发语言·kotlin
Forbesdytto5 天前
kotlin中的对象表达式与java中的匿名内部类
java·kotlin·移动端