Метод invokeAll
можно использовать для RecursiveTask
с.В качестве параметров требуется два ForkJoinTask
с, и поскольку RecursiveTask
расширяет ForkJoinTask
, RecursiveTask
может использоваться как ForkJoinTask
.
Что касается получения результатов, invokeAll
ничего не возвращает, поэтому вы не получите информацию таким образом.Что вы можете сделать, это вызвать метод join
для каждого из ваших RecursiveTask
s.Поскольку вы знаете, что обе задачи завершены к моменту возврата invokeAll
, метод join
будет возвращаться очень быстро.
invokeAll(t1, t2);
Integer result1 = t1.join();
Integer result2 = t2.join();
Однако на этом этапе вы также можете просто делать то, что делали.изначально звонил compute
и join
.Использование invokeAll
немного неуклюже, когда у вас есть только две задачи и вам нужны оба их результата.