Объясните отличие между холодными и горячими потоками данных в корутинах Kotlin.

В Kotlin корутинах потоки данных (Flows) бывают двух типов: холодные (cold) и горячие (hot).

Короткий ответ

Что ответить на собеседовании

В Kotlin корутинах потоки данных (Flows) бывают двух типов: холодные (cold) и горячие (hot).

Подробный разбор

Ответ с пояснениями

В Kotlin корутинах потоки данных (Flows) бывают двух типов: холодные (cold) и горячие (hot).

Холодные потоки — это потоки, которые начинают испускать данные только тогда, когда на них подписываются (collect). Каждый подписчик получает полный поток данных с начала. Пример: flow { emit(1); emit(2) } — данные генерируются заново для каждого подписчика.

Горячие потоки — это потоки, которые испускают данные независимо от наличия подписчиков. Подписчик получает данные с момента подписки, а не с начала. Пример: SharedFlow или StateFlow — они продолжают испускать значения, даже если нет подписчиков.

Итог:

  • Холодные потоки ленивы, данные генерируются при подписке.
  • Горячие потоки активны постоянно, данные транслируются всем подписчикам в реальном времени.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку