我正在用Spring Boot和Kotlin构建一个后端应用程序.我想为特定的方法实现并行执行.我try 使用协程,但底层方法同步运行.
这就是我到目前为止try 过的:
fun getXsByIds(xIds: List<String>): List<X> {
val xList = ArrayList<X>();
runBlocking {
val promises = xIds.map {
async {
getXById(it)
}
};
xList.addAll((promises.awaitAll()).filterNotNull())
}
return xList;
}
fun getXById(xId: String): X? {
// This method makes request to database
}
当我把日志(log)放在getXById
中时,
fun getXById(xId: String): X? {
print("start");
// This method makes request to database
print("end");
}
我得到了这个输出
start
end
start
end
start
end
...
为什么我的协同程序不能并行工作?这是一双弹簧靴.不是被动的.每请求线程样式.