gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 08:12:28 24 4
gpt4 key购买 nike

我有一个函数来对我的数据进行建模。如果参数“Entity”包含子项,则将其包含在子项名称中。 child 有两种类型:A 型和 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/

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

最佳答案

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

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

关于java - 我可以在java中的并行流中进行递归函数调用吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30186084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com