Kotlin

[Kotlin Coroutine] Cold Stream vs Hot Stream

반응형

Photo by  Andy Holmes  on  Unsplash

 

코루틴을 알아가기 시작했고 Scope와 flow, channel 등 여러 API를 알아오셨을겁니다. 많은 포스팅에서 보셨듯이 flow는 cold stream, channel은 hot stream이라는 것을 알고 계실겁니다.

Stream이란?

[사전적 용어]

  1. 줄줄[계속] 흐르다
  2. 줄을 지어 이어지다

라는 사전적 용어를 가집니다. 흔히 안드로이드에서 비동기작업을 진행할 때 어떤 방식의 데이터 흐름을 만들지 선택하게 됩니다.

 

Cold Stream

  • 하나의 소비자(Consumer)에게 값을 보낸다
  • 생성된 이후에 누군가 소비하기 시작하면 데이터를 발행한다
  • 예) 상태가 변하지 않는 값을 읽을 때(DB를 읽거나 URL을 통해 서버 값을 읽는 경우)

Hot Stream

  • 하나 이상의 소비자(Consumer)에게 값을 보낸다
  • 데이터 발행이 시작된 이후 부터 모든 소비자에게 같은 데이터를 발행하고 구독자가 없는 경우에도 데이터를 발행한다
  • ) 상태가 변하는 값을 읽을 (라디오에서 방출하는 방송을 청취할 )
반응형