我刚刚看到了Java 7 RecursiveAction.invokeAll()的用法,我想知道:
任务线程池的大小是多少? (或确定它的算法..)
如果我有很多任务(比如100个任务),我应该使用它吗?
答案 0 :(得分:1)
线程池的大小是你设置的大小,也就是你拥有的核心数量:
公共ForkJoinPool()
使用默认线程工厂,无
ForkJoinPool
和非异步LIFO处理模式,创建并行度等于Runtime.availableProcessors()
的{{1}}。
或某些具体数字:
public ForkJoinPool(int parallelism)
使用指示的并行度级别,默认线程工厂,无
UncaughtExceptionHandler
和非异步LIFO处理模式创建ForkJoinPool
。
请阅读the JavaDoc了解详情。
递归动作的工作方式是它产生自身的多个版本。您始终以 1 开头。所产生的行动数量有点无关紧要,数百或数千应该没有问题 - 只要他们没有“堆积”并且#34;