如何创建在我的 ThreadPoolExecutor 上工作的自定义 Kotlin 协程调度程序?

Dmi*_*kov 3 java kotlin kotlin-coroutines

在迁移到 Kotlin 的过程中,问题出现了。
由于不同的原因,我们已经有了一些线程池。
如何在现有的 ThreadPool 上执行协程?

例如这个代码:

    suspend fun fetchMedia(): Flow<MediaItem> {
        return withContext(Dispatchers.IO) {...} 
    }
Run Code Online (Sandbox Code Playgroud)

如何将 Dispatchers.IO 替换为我自己的 ThreadPoolExecutor ?

Gle*_*val 8

您可以使用 Executor ThreadPools 调用asCoroutineDispatcher()它,如下所示:

suspend fun fetchMedia(): Flow<MediaItem> {
    return withContext(myThreadPool.asCoroutineDispatcher()) {...} 
}
Run Code Online (Sandbox Code Playgroud)

  • 在 Java 中 `executor.asCoroutineDispatcher()` 看起来像 `ExecutorsKt.from(executor)` (2认同)