kotlin协程,runBlocking里面的launch

kotlin协程,runBlocking里面的launch

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

fun main(args: Array<String>) {
    println("start")
    val time = measureTimeMillis {
        runBlocking {
            println("1")

            launch {
                println("->a")
                delay(2000)
                println("a")
            }

            launch {
                println("->b")
                delay(1500)
                println("b")
            }

            println("2")
        }
    }

    println("time=$time")
}

start
1
2
->a
->b
b
a
time=2071

kotlin协程runBlocking 阻塞线程_zhangphil的博客-CSDN博客runBlocking 内部启动的3个协程做耗时操作,从输出可以看到3个协程交叉并发执行,runBlocking 会等到3个协程执行结束后才退出,输出结果有明确先后顺序。runBlocking 会等待相同作用域的协程完成才退出runBlocking 本身阻塞线程,但内部运行的协程又非阻塞。kotlin的runBlocking 当内部相同作用域的所有协程都运行结束后,在 runBlocking 之后的代码才能执行, runBlocking 会阻塞所在线程。https://blog.csdn.net/zhangphil/article/details/129263455

猜你喜欢

转载自blog.csdn.net/zhangphil/article/details/131387354