我有一个这样创建的流:
StreamEx.generate(new MySupplier<List<Entity>>())
.flatMap(List::stream)
.map(Entity::getName)
.map(name -> ...)
.. // more stuff
我可以通过添加以下内容将其更改为并行工作parallel
:
StreamEx.generate(new MySupplier<List<Entity>>())
.flatMap(List::stream)
.map(Entity::getName)
.map(name -> ...)
.parallel()
.. // more stuff
但我还想添加一个takeWhile
条件来使流停止:
StreamEx.generate(new MySupplier<List<Entity>>())
.takeWhile(not(List::isEmpty))
.flatMap(List::stream)
.map(Entity::getName)
.map(name -> ...)
.parallel()
.. // more stuff
但是,一旦我添加了takeWhile
流,似乎就变成了顺序的(至少它只由一个线程处理)。根据javadoc,takeWhile
如果我理解正确,应该使用并行流。我做错了什么还是根据设计?