The following code prints out 'Inside...' two times.
import java.util.concurrent.ForkJoinPool;
public class Test {
public static void main(String[] args) {
ForkJoinPool forkJoinPool = new ForkJoinPool(3);
forkJoinPool.submit(() -> {
System.out.println("Inside...");
}).invoke();
}
}
Why is that?
You should not call both submit and invoke. ForkJoinPool#submit publishes the task to the pool, and will also execute it once a thread is ready.
The method also returns ForkJoinTask, on which you call invoke, performing the task again and waiting for its result.