前言
上一篇: Callback转挂起函数 文章中,介绍了在Kotlin协程中如何把传统的回调风格的异步操作转换为协程风格的挂起函数,这个在开发过程中是非常常用的,主要用于把 callback 风格的代码转换为协程中的挂起函数,以便于我们在协程环境中调用。
但是,有时候我们也会遇到一些特殊的情况,比如我们需要在线程中调用已存在的协程代码,并且希望这个线程能够阻塞等待协程执行完毕,这时候就需要用到runBlocking
函数了。
runBlocking
runBlocking
是一个顶层函数,它的作用是创建一个新的协程并且阻塞当前线程并等待协程执行完毕。
runBlocking
函数的源码如下:
根据注释和源码可以得知:
runBlocking
会启动一个新的协程并阻塞当前线程,直到该协程完成。runBlocking
不应该在协程内使用。它的设计目的是桥接常规的阻塞代码和使用挂起函数编写的库,比较适合用在主函数和测试代码中。runBlocking
中如果没有指定协程调度器,那么协