在我看来,使用Java 8的Stream
时,无论是“对象”流还是原始流(即IntStream
等),显而易见的代码只需使用:
someStreamableResource.stream().whatever()
但是,相当多的“可流式资源”也有.parallelStream()
。
阅读javadoc时不清楚.stream()
流是否总是顺序的,以及.parallelStream()
流是否总是并行的...
然后还有Spliterator
,特别是它的.characteristics()
,其中之一是它可以是CONCURRENT
,甚至是IMMUTABLE
。
我的直觉是实际上,一个Stream
是否可以默认为并行,或者根本不支持并行,是由其基础的Spliterator
所决定的...
我是否走在正确的轨道上?我已经阅读了Java文档,反复阅读,但仍无法得出清晰的答案...
trySplit
的情况下并行化自身?是否有一种更明确的方法来强制流保持顺序? - shmosel.sequential()
需要流程变为顺序执行。但是并行性只能被请求,而不能被要求,因为有许多因素需要共同作用才能实现真正的并行性。 - Brian Goetz