Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? 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