我可以在java中的并行流内部进行递归函数调用

时间:2015-05-12 08:53:44

标签: java

我有一个模拟我的数据的功能。 如果参数"实体"包含子,它包含在子名称中。 A型和A型儿童有两种类型。 TYPE-B。 对于每种类型,函数都是递归调用的。 当孩子没有更多子名时,这个递归函数调用就会退出。

public void modelMyData(Entity entity) {

    if (entity.getChildNames()[0] != null) {
        Arrays.stream(entity.getChildNames())
                .collect(Collectors.toList())
                .parallelStream()
                .forEach(childType -> {

                        entity.getChild(childType).parallelStream()
                                .forEach(child -> {
                                    modelMyData(child);

                                    });
                        ;
                    });
    }

    System.out.println("INSERT " + entity.getChildAttributeValue());

}

该程序对我来说很好。但据说并行流的使用在java编程中是不好的。

访问http://zeroturnaround.com/rebellabs/java-parallel-streams-are-bad-for-your-health/

我应该使用流而不是并行流吗?

1 个答案:

答案 0 :(得分:1)

你在溪流中进行长时间的操作吗?如果是,请使用parallelStream,否则,请不要使用parallelStream。你读过这篇文章吗?它指的是长时间运行期间的线程池耗尽。这是你的问题/程序的情况吗?

顺便说一句,只需执行Arrays.asList(entity.getChildNames()).parallelStream()....,无需复制所有内容。