为什么java.util.Stream的AbstractTask使用LEAF_TARGET = ForkJoinPool.getCommonPoolParallelism() << 2?

kan*_*ics 5 java parallel-processing forkjoinpool java-stream

设置这个 Leaf Target 的想法是让每个线程有 4 个叶子;因此,如果一个线程提前结束,它将有大量的机会窃取工作。

但是 getCommonPoolParallelism() 不再返回 #cores.. 它而是返回 #cores - 1。那么为什么这是当前的 LEAF_TARGET?