Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
2年前关闭。
我正在学习Java 8的这一功能,并且在发现用于并行处理生成的
任何人都可以通过清晰的示例为我提供一些好的教程来帮助我吗?
欲了解更多信息,请阅读https://docs.oracle.com/javase/8/docs/api/java/util/Spliterator.html
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
2年前关闭。
我正在学习Java 8的这一功能,并且在发现用于并行处理生成的
Spliterator
的自定义类的情况下,我真的很难理解trySplit()
接口的Stream
方法实现。任何人都可以通过清晰的示例为我提供一些好的教程来帮助我吗?
最佳答案
理想的trySplit方法可以有效地(无遍历)划分其
元素精确地分成两半,可以进行平衡的并行计算。许多
偏离这一理想仍然非常有效;例如,仅
近似分裂近似平衡的树,或对于树
其中叶节点可能包含一个或两个元素,
进一步拆分这些节点。但是,余额和/或
效率过低的trySplit机制通常会导致效果不佳
并行性能。
以及带有注释的方法结构
public Spliterator<T> trySplit() {
int lo = origin; // divide range in half
int mid = ((lo + fence) >>> 1) & ~1; // force midpoint to be even
if (lo < mid) { // split out left half
origin = mid; // reset this Spliterator's origin
return new TaggedArraySpliterator<>(array, lo, mid);
}
else // too small to split
return null;
}
欲了解更多信息,请阅读https://docs.oracle.com/javase/8/docs/api/java/util/Spliterator.html
10-05 23:06