Java7 ForkJoinTask 中哪个阈值会更好

Which number of threshold will be better in Java7 ForkJoinTask

我正在试用 Java ForkJoin 框架并编写了一个程序来处理大型数据列表。

众所周知ForkJoinTask中总是设置字段threshold来指出数据链表的最小分区数

问题是,阈值多大或多小才会有更好的性能,或者是否灵活只与核心数CPU或线程支持有关?

Forkjointask 等并行计算框架中是否有阈值的最佳实践?

阈值没有固定规则。一个好的数字取决于数组中元素的数量 (N)、每个元素的处理类型 (Q)(对两个数字进行简单比较是低 Q,进行复杂计算是高 Q。)

我使用的通用公式在我并不总是知道的情况下大部分时间都运行良好 问:我想生成大约 8 倍于线程的任务或 32k 的最小阈值(取决于 N of当然。)

int temp = count / (threads << 3);
threshold = (temp < 32768) ? 32768 : temp;

其中 count 是 N,threads 是线程数。