Как сделать несколько запросов в сеть и складывать результат в один объект с помощью многопоточности

«Как сделать несколько запросов в сеть и складывать результат в один объект с помощью многопоточности» — вопрос из категории Многопоточность, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для выполнения нескольких сетевых запросов параллельно и объединения результатов можно использовать CoroutineScope с async:

val scope = CoroutineScope(Dispatchers.IO)
val result1 = scope.async { api.getData1() }
val result2 = scope.async { api.getData2() }

val combinedResult = CombinedResult(
    result1.await(),
    result2.await()
)

Ключевые моменты:

  1. Запускаем запросы параллельно через async
  2. await() дожидается завершения всех запросов
  3. Объединяем результаты в один объект
  4. Используем Dispatchers.IO для сетевых операций

Альтернатива - Flow.combine() для реактивного подхода.