我在 API 后端使用 Kotlin。我不想在中运行数据库查询common pool
。基本上,我想创建一个CoroutineContext
有许多与数据库匹配的线程maximumPoolSize
.
完成此任务的最佳方法是什么(一般情况下以及针对我的特定用例)?我知道 Kotlin 提供contexts
开箱即用,但是创建我自己的最佳方法是什么?
奖金问题:如果我的 jdbc 连接池大小为 3,那么使用线程池大小为 3 的协程上下文是否有意义?这能保证最好的并发性吗?
功能newFixedThreadPoolContext
现在被认为在当前版本的 Kotlin 协程 (1.3.0) 中已过时,因为它现在带有注释@ObsoleteCoroutinesApi
如果您尝试使用它,它会给您一个警告。文档还指出,它将在未来被替换。
现在创建 CoroutineContext 的推荐方法是通过
Executors.newFixedThreadPool(3).asCoroutineDispatcher()
因此,带有导入的完整示例(还创建了 CoroutineScope)如下所示
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.asCoroutineDispatcher
import java.util.concurrent.Executors
import kotlin.coroutines.CoroutineContext
fun coroutineScope(threads: Int): CoroutineScope {
val context: CoroutineContext = Executors.newFixedThreadPool(threads).asCoroutineDispatcher()
return CoroutineScope(context)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)