关注
这段代码是一个Kotlin协程的例子,其中`runBlocking`是一个挂起函数,用于启动一个新的协程并阻塞当前线程,直到协程执行完毕。在这个例子中,`runBlocking`创建了一个新的协程`job`,并在该协程中启动了两个子协程。
第一个子协程在`launch`函数中执行,该函数用于启动一个新的协程并立即返回,而不会阻塞当前线程。在这个子协程中,首先打印"1",然后延迟1000毫秒,最后打印"2"。
第二个子协程也在`launch`函数中执行,同样首先打印"3",然后延迟2000毫秒,最后打印"4"。
`job.join()`是一个挂起函数,用于等待协程`job`执行完毕。在这个例子中,`job`是`runBlocking`创建的协程,所以`job.join()`实际上是在等待`runBlocking`创建的协程执行完毕。
然而,由于`runBlocking`创建的协程中启动了两个子协程,这两个子协程的执行顺序是不确定的。如果第一个子协程先执行,那么它将打印"1",然后延迟1000毫秒,然后打印"2"。如果第二个子协程先执行,那么它将打印"3",然后延迟2000毫秒,然后打印"4"。
由于`runBlocking`创建的协程需要等待其所有子协程执行完毕才能结束,所以如果第一个子协程先执行,那么`runBlocking`创建的协程将等待1000毫秒,然后打印"2",最后打印"end"。如果第二个子协程先执行,那么`runBlocking`创建的协程将等待2000毫秒,然后打印"4",最后打印"end"。
因此,`end`的打印时间取决于哪个子协程先执行。如果第一个子协程先执行,那么`end`将在1000毫秒后打印。如果第二个子协程先执行,那么`end`将在2000毫秒后打印。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
01-02 11:44
门头沟学院 C工程师 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客吐槽大会 #
3261次浏览 69人参与
# 机械人你知道哪些单休企业 #
83130次浏览 415人参与
# 今年春招是金一银二嘛? #
8845次浏览 119人参与
# 参加完秋招的机械人,还参加春招吗? #
103777次浏览 686人参与
# 1月小结:你过的开心吗? #
2014次浏览 52人参与
# 抛开难度不谈,你最想去哪家公司? #
4823次浏览 118人参与
# 为什么有人零实习也能进大厂? #
5434次浏览 132人参与
# AI求职实录 #
4049次浏览 112人参与
# AI时代的工作 VS 传统时代的工作,有哪些不同? #
8702次浏览 207人参与
# 机械人春招想让哪家公司来捞你? #
379333次浏览 3141人参与
# 当你问AI“你会取代我的工作吗”,它说_? #
3965次浏览 141人参与
# 你的第一家实习公司是什么档次? #
4485次浏览 75人参与
# 没关系,至少我的__很曼妙 #
3833次浏览 65人参与
# 赚钱的意义在这一刻具象化 #
4156次浏览 99人参与
# 你的landing期是如何度过的? #
8997次浏览 176人参与
# 除了Java,最推荐学什么技术? #
6185次浏览 151人参与
# 我发现了面试通关密码 #
1600195次浏览 19679人参与
# 一人一道大厂面试题 #
114171次浏览 1263人参与
# 你觉得什么岗位会被AI替代 #
36888次浏览 256人参与
# 你在职场上见过哪些“水货”同事 #
30779次浏览 168人参与
