
208
|
第
13
章
main 函数从runBlocking 构建器开始,这种用法是这种简单演示的典型操作。
retrieve1 与 retrieve2 这两个函数做了相同的事情,即延迟 100 毫秒然后返回一
个字符串。结果如下所示(注意,打印顺序可能有所不同):
Retrieving data on DefaultDispatcher-worker-2
Retrieving data on DefaultDispatcher-worker-2
printing result on main withContextResults
printing result on main asyncResults
两者都使用了 Dispatchers.IO 调度器(将在 13.3 节中讨论),因此这两个函数之间
的唯一区别是一个函数使用 async/await,另一个函数将其替换为 withContext。
实际上,当 IntelliJ IDEA 观察到当你使用 async 后立即使用 await 时,它会建议你将
其替换为如上所示的 withContext,如果你愿意,它会帮助你自动完成这个步骤。
13.3
使用协程调度器
问题
如何使用专用的线程池来执行 I/O 或其他任务。
解决方案
在 Dispatchers 类中使用适当的调度器。
讨论
协程在由 CoroutineContext 类型定义的上下文中执行,该类型包含由 Coroutine-
Dispatcher 类的实例表示的协程调度器。调度程序确定协程执行在哪个线程或线程 ...