You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何无延迟的Coroutine会在其后代码执行完毕后才调用?

为什么无延迟的Coroutine会在下方代码执行完后才运行?

先看你给出的示例代码:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    GlobalScope.launch {
        println("Hello from coroutine")
    }
    println("Hello from outside")
}

输出结果是:
I/System.out: Hello from outside
I/System.out: Hello from coroutine

原因其实很简单:

  • 调用GlobalScope.launch时,只是把协程里的代码异步提交到了后台线程池的任务队列中,这个操作本身不会阻塞当前的主线程。
  • 主线程会按顺序继续执行后续的println("Hello from outside"),这行代码是同步执行的,会立刻输出内容。
  • 之后后台线程池才会调度空闲线程去执行协程里的代码,所以协程的输出会排在后面。

哪怕协程里没有设置任何延迟,它的执行也需要等待线程池完成任务调度,而主线程的同步代码是直接在当前线程执行,自然会先跑完。

内容的提问来源于stack exchange,提问作者user19878941

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 05:50:51