我正在尝试使用RecursiveTask<Double>
调用ForkJoinPool
上的invokeall()
实例列表,但它抱怨类型。
我不太确定为什么它不起作用。
我有定义如下的任务类:
public class WorkerTask<G extends Game> extends RecursiveTask<Double>
我创建这些任务的
n
,然后将它们放到ForkJoinPool
中。我知道我可以使用pool.invoke(getValue)
逐个调用它们,但这并不是我最终想要的。docs告诉我,它必须是实现
Callable
的对象的列表。我遵循类型层次结构,直到ForkJoinTask
。在那里,我可以看到定义了static final class AdaptedCallable<T> extends ForkJoinTask<T>
的类,因此我认为它应该可以工作。我在这里做错了什么?
最佳答案
根据api,ForkJoinTask没有实现任何Callable接口吗?
查看this示例,我不确定您是否应该在ForkJoinPool上使用invokeAll。您应该将新的WorkerTask添加到计算方法本身的列表中,然后调用invokeAll(List<WorkerTask>)
。