流并行化中的Java 8流

时间:2016-04-01 19:17:41

标签: java parallel-processing java-stream

我有一个相当复杂的过程,需要几个级别的嵌套for循环。

仅针对一组特定条件执行操作。换句话说:

for(){ 
    if(){ 
        for(){ 
            if(){
                //Something happens RIGHT HERE
            }
            //And maybe here
        }
    }
}

没有其他声明,只有一个可靠的代码路径遍历一堆不同类型的对象。

我的问题是,如果我用流替换这个逻辑(考虑到CPU必须执行多少次操作来完成这个循环,我认为并行流程就是这样)并且我在流中有一个流在一个流(BWOOOMMMPPPPPPP INCEPTION NOISE)和我parallelstream()的顶层,顶层下面的流是否仍然按顺序运行,但只是在各自的线程内?

    toplevelItems.parallelstream().forEachOrdered{
       //Does this stuff run in series within as many threads as there are toplevelItems
       otherObjects.stream().forEach{
           //or Naw?
           stillOtherObjects.stream().forEach{

1 个答案:

答案 0 :(得分:1)

顶部parallelStream()以下的任何内容都将以连续方式完成。我假设您正在处理类似List<List<>>的内容,因此您将在顶层下方创建一个与顶层无关的新流。