背压文档states
处理过度生产的Observable的另一种方法是阻止callstack(停止管理过度生产的Observable的线程)。这具有违背Rx的“反应性”和非阻塞模型的缺点。
有人能详细说明为什么这被认为是不好的做法?参考文献赞赏。
答案 0 :(得分:2)
因为你可能最终阻塞一个线程,例如computation()
调度程序,阻止其他流的部分或全部进展。第二个问题是背压和阻塞/解除阻塞并不能很好地相互配合。现在已删除的onBackpressureBlock
已解决此问题,其中subscribeOn().onBackpressureBlock()
的链工作但onBackpressureBlock().subscribeOn()
处于死锁状态。
除非您必须处理遗留阻止IO或API,否则几乎总有一种方法可以非阻塞地执行操作。