我刚刚看到了 Java 7 RecursiveAction.invokeAll() 的用法,我想知道:
任务线程池的大小是多少?(或确定它的算法..)
如果我有很多任务(比如 100 个任务),我应该使用它吗?
我刚刚看到了 Java 7 RecursiveAction.invokeAll() 的用法,我想知道:
任务线程池的大小是多少?(或确定它的算法..)
如果我有很多任务(比如 100 个任务),我应该使用它吗?
线程池的大小是您设置的任何值,或者您拥有的核心数量:
公共 ForkJoinPool()
使用默认线程工厂、no和非异步 LIFO 处理模式创建
ForkJoinPool
并行度等于的 。Runtime.availableProcessors()
UncaughtExceptionHandler
或一些特定的数字:
公共 ForkJoinPool(int 并行性)
创建
ForkJoinPool
具有指示的并行度级别、默认线程工厂、noUncaughtExceptionHandler
和非异步 LIFO 处理模式的 a。
请阅读JavaDoc了解更多信息。
递归动作的工作方式是它产生多个版本的自身。你总是从1开始。生成的动作数量有些无关紧要,数百或数千应该没问题 - 只要它们不“堆积”。