首页 > 解决方案 > 什么是/如何为并行流动选择“预取”?

问题描述

我在这里阅读并行流文档,它提到:

默认情况下,并行级别设置为可用 CPU 的数量 (Runtime.getRuntime().availableProcessors()),来自顺序源的预取量设置为 Flowable.bufferSize() (128)。两者都可以通过parallel() 的重载来指定。

我仍然不明白这个预取的目的,以及为什么它这么大。我想这意味着它下面的运算符将持有超过 1 个排放量(默认情况下为 128 个)。但是,我无法想象这是一个好主意,因为下游运营商将有效地单线程,直到我们从上游排放超过 128 个?(例如,如果我们有 130,第一个 128 将由一个线程预取,最后 2 个将给第二个。所有其他线程将什么都不做。)。

我猜在更快的流中更小的对象应该有更大的预取,因为在 rx 链之间传递数据的成本会相对更高,所以我们希望预取更高。我不确定在这里选择哪些数字。

标签: rx-java2rx-java3

解决方案


推荐阅读