ForkJoinPool 执行任务两次
ForkJoinPool executes task two times
以下代码打印出 'Inside...' 两次。
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();
}
}
这是为什么?
您不应同时调用 submit
和 invoke
。 ForkJoinPool#submit
将任务发布到池中,并在线程就绪后执行。
该方法也 returns ForkJoinTask
,您调用 invoke
,再次执行任务并等待其结果。
以下代码打印出 'Inside...' 两次。
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();
}
}
这是为什么?
您不应同时调用 submit
和 invoke
。 ForkJoinPool#submit
将任务发布到池中,并在线程就绪后执行。
该方法也 returns ForkJoinTask
,您调用 invoke
,再次执行任务并等待其结果。