title: Kotlin Coroutines: Channel vs Flow
body: <p>I'm recently studying and reading a lot about <a href="https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/" rel="noreferrer">Flow</a> and Kotlin Coroutines. But I still get confused about when I should use <code>Flow</code> and when I should use <code>Channel</code>.</p>
  <p>At the beginning it looked more simple. Working with hot streams of data? <code>Channel</code>. Cold ones? <code>Flows</code>. Same goes if you need to listen to streams of data from more than a single place; if that's the case <code>Channel</code> is the choice to go. There are still a lot of examples and questions.</p>
  <p>But recently <code>FlowChannels</code> where introduced, together with tons of methods and classes that encourage the use of <code>Flow</code>, which facilities transforming <code>Channels</code> into <code>Flows</code> and so on. With all this new stuff coming on each Kotlin release I am getting more and more confused. So the question is:</p>
  <p>When should I use <em>Channel</em> and when should I use <em>Flow</em>?</p>