0

我刚刚看到了 Java 7 RecursiveAction.invokeAll() 的用法,我想知道:

任务线程池的大小是多少?(或确定它的算法..)

如果我有很多任务(比如 100 个任务),我应该使用它吗?

4

1 回答 1

1

线程池的大小是您设置的任何值,或者您拥有的核心数量:

公共 ForkJoinPool()

使用默认线程工厂、no和非异步 LIFO 处理模式创建ForkJoinPool并行度等于的 。Runtime.availableProcessors()UncaughtExceptionHandler

或一些特定的数字:

公共 ForkJoinPool(int 并行性)

创建ForkJoinPool具有指示的并行度级别、默认线程工厂、noUncaughtExceptionHandler和非异步 LIFO 处理模式的 a。

请阅读JavaDoc了解更多信息。

递归动作的工作方式是它产生多个版本的自身。你总是从1开始。生成的动作数量有些无关紧要,数百或数千应该没问题 - 只要它们不“堆积”。

于 2014-09-14T12:15:52.163 回答