我正在尝试使用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>)

09-05 15:52