【发布时间】:2021-03-14 18:10:25
【问题描述】:
上下文:我有一个应用会根据用户交互多次发送相同的请求。
我需要尽可能减少 IO 操作,所以我的想法是以某种方式将请求排入队列,直到第一个请求解决。然后在排队的请求中使用获取的数据。
我认为实现此目的的一种方法是使用 Java 并发 API(BlockingQueue,仅举一例)。
我已经在使用协程和挂起函数,并且可以很好地使用它们,但遗憾的是我目前对这些主题的了解还不够。
示例:
suspend fun getDataAndCalculate(): Int {
val data = remote.getDataFromServer()
return calculate(data)
}
函数getDataAndCalculate() 可以从多个线程中多次调用,最好在remote.getDataFromServer() 正在执行时以某种方式将所有这些调用加入队列或挂起。当remote.getDataFromServer() 返回时,在所有待处理的getDataAndCalculate() 调用中使用data。
¿ 有什么想法或建议吗? ¿ 这是推荐的吗? ¿ 你知道解决这类问题的任何设计模式吗?
谢谢!
(不太清楚标题,希望能描述我想要完成的工作,否则,我可以改进它。)
【问题讨论】:
标签: android concurrency retrofit2 kotlin-coroutines