gpt4 book ai didi

java - fork/join,输入数组是否需要同步?

转载 作者:行者123 更新时间:2023-11-30 06:10:05 26 4
gpt4 key购买 nike

我有一个很大的对象数组,想要收集具有特定字段值的所有对象,因为它是一个很大的数组,我计划在java中使用fork/join。

大数组不是通过创建新的子列表而是通过传入原始列表但带有开始/结束范围来 fork 的。计算查找满足特定谓词的所有对象并将它们添加到传入的 ConcurrentLinkedQueue 中。所有子任务加入后,将ConcurrentLinkedQueue写入存储。

输入的大列表必须是同步列表吗?我相信不是因为线程启动发生在规则之前,我认为它在 fork/join 执行开始时的状态对任何任务/线程都是可见的。但我想确认我的理解是否正确。

最佳答案

存在与各种 fork-join 操作相关的 happens-before 边,因此您通常可以利用这些边,而无需额外的同步。但是,您可能会发现以下内容(在幕后使用 FJ)可以用更少的工作量为您提供所需的答案:

Element[] matching = 
Stream.of(largeArray)
.parallel()
.filter(e -> e.theField.equals(theTargetValue))
.toArray();

关于java - fork/join,输入数组是否需要同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50439252/

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