Я пытаюсь вызвать список экземпляров RecursiveTask<Double>
на ForkJoinPool
с помощью invokeall()
но он жалуется на типы.
Я не совсем уверен, почему он не работает.
У меня есть классы задач, которые определены следующим образом:
public class WorkerTask<G extends Game> extends RecursiveTask<Double>
Я создаю n
из этих задач, и тогда я хотел бы оставить их в ForkJoinPool
. Я знаю, что могу вызывать их один за другим, используя pool.invoke(getValue)
но это не то, что я хочу в конце.
Документы говорят мне, что это должен быть список объектов, реализующих Callable
. Я следовал иерархии типов вверх до ForkJoinTask
. Там я вижу класс, определенный static final class AdaptedCallable<T> extends ForkJoinTask<T>
поэтому я думаю, что он должен работать.
Что я здесь делаю неправильно?
Согласно api ForkJoinTask не реализует какой-либо интерфейс Callable?
Глядя на этот пример, я не уверен, что вы должны использовать invokeAll на ForkJoinPool. Вы должны добавить новый WorkerTask в список в самом методе вычисления, а затем вызвать invokeAll(List<WorkerTask>)
.
AdaptedCallable
, поэтому я решил, что оно может работать. Я просто не знаю как.