Observable vs Flowable rxJava2 : <p>I have been looking at new rx java 2 and I'm not quite sure I understand the idea of <code>backpressure</code> anymore... </p>

<p>I'm aware that we have <code>Observable</code> that does not have <code>backpressure</code> support and <code>Flowable</code> that has it.</p>

<p>So based on example, lets say I have <code>flowable</code> with <code>interval</code>:</p>

<pre><code>        Flowable.interval(1, TimeUnit.MILLISECONDS, Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Consumer&lt;Long&gt;() {
                @Override
                public void accept(Long aLong) throws Exception {
                    // do smth
                }
            });
</code></pre>

<p>This is going to crash after around 128 values, and thats pretty obvious I am consuming slower than getting items. </p>

<p>But then we have the same with <code>Observable</code> </p>

<pre><code>     Observable.interval(1, TimeUnit.MILLISECONDS, Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Consumer&lt;Long&gt;() {
                @Override
                public void accept(Long aLong) throws Exception {
                    // do smth
                }
            });
</code></pre>

<p>This will not crash at all, even when I put some delay on consuming it still works. To make <code>Flowable</code> work lets say I put <code>onBackpressureDrop</code> operator, crash is gone but not all values are emitted either.</p>

<p>So the base question I can not find answer currently in my head is why should I care about <code>backpressure</code> when I can use plain <code>Observable</code> still receive all values without managing the <code>buffer</code>? Or maybe from the other side, what advantages do <code>backpressure</code> give me in favour of managing and handling the consuming?</p>
