Kotlin 回调函数是多线程的吗?

Are Kotlin callback functions multi-threaded?

在下面的例子中(来自 Kotlin 文档),有嵌套的回调函数。

假设在主线程上调用了 postItem,调用 preparePostAsync 后主线程是否立即继续执行而不等待 preparePostAsync 完成?

如果是,这是否意味着Kotlin实际上是在回调函数的掩护下执行多线程? (假设这是真的,是否意味着回调数=线程数?)

fun postItem(item: Item) {
    preparePostAsync { token -> 
        submitPostAsync(token, item) { post -> 
            processPost(post)
        }
    }
}

如果和多线程无关,那么回调函数和多线程有什么区别?

这完全取决于您正在使用的API。文档中的那些例子是虚构的,不是标准库的一部分。

通常,当函数接受回调时,它会在请求入队后立即returns,并在结果返回时在主线程上调用回调。

像 OkHttp 这样的网络库在后台使用线程池,因此 运行 后台线程与发出的请求数不一定是一一对应的。

“回调”一词只是遵循这种模式的异步任务的非正式名称。