我有以下代码:
val context = newFixedThreadPoolContext(nThreads = 10, name="myThreadPool")
val total = 1_000_000 //can be other number as well
val maxLimit = 1_000
return runBlocking {
(0..total step maxLimit).map {
async(context) {
val offset = it
val limit = it + maxLimit
blockingHttpCall(offset, limit)
}
}.flatMap {
it.await()
}.associateBy {
...
}.toMutableMap()
}
我希望阻塞 api 同时发生 10 个调用。但是,上面的代码似乎没有像我预期的那样做(我认为所有的调用都会立即开始),或者至少我不明白它是否这样做。
实施它的正确方法是什么?如果我使用改造的异步 api,相同的解决方案会起作用吗?