ForkJoinPool.invokeAll (ArrayList <G extends RecursiveTask <T>)

1

Я пытаюсь вызвать список экземпляров 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> поэтому я думаю, что он должен работать.

Что я здесь делаю неправильно?

Теги:
fork-join

1 ответ

1
Лучший ответ

Согласно api ForkJoinTask не реализует какой-либо интерфейс Callable?

Глядя на этот пример, я не уверен, что вы должны использовать invokeAll на ForkJoinPool. Вы должны добавить новый WorkerTask в список в самом методе вычисления, а затем вызвать invokeAll(List<WorkerTask>).

  • 0
    Это верно. Существует настоящее определение класса с именем AdaptedCallable , поэтому я решил, что оно может работать. Я просто не знаю как.
  • 0
    AdaptedCallable - это внутренний класс в соответствии с docjar.com/docs/api/java/util/concurrent/… он принимает Callable в своем конструкторе и не реализует интерфейс Callable. Так что не думайте, что это сработает.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню