【发布时间】:2014-03-22 11:15:20
【问题描述】:
使用 Java 8 是否需要执行以下代码才能肯定从Collection 获取并行流?
private <E> void process(final Collection<E> collection) {
Stream<E> stream = collection.parallelStream().parallel();
//processing
}
来自Collection API:
默认流并行流()
返回一个可能是并行的 Stream,这个集合作为它的源。此方法允许返回顺序流。
来自BaseStream API:
S 并行()
返回一个等效的并行流。可能会返回自身,因为流已经是并行的,或者因为底层流状态被修改为并行。
我需要调用一个应该将流并行化两次的函数不是很尴尬吗?
【问题讨论】:
-
并非所有的 collections 和 stream 都支持并行执行,但所有的集合和流都有这些。我认为这就是奇怪文档的原因。所以。不。您不必调用这两种方法。
-
@nosid 但是如果这个方法被一个不支持并行的集合调用,那么
parallelStream()会返回一个顺序流,但是parallel()的约定保证流会 平行。这会导致我需要调用这两种方法?
标签: java java-8 java-stream