源:
public static void invokeAll(ForkJoinTask<?> t1, ForkJoinTask<?> t2) {
t2.fork();
t1.invoke();
t2.join();
}
为什么不使用:
public static void invokeAll(ForkJoinTask<?> t1, ForkJoinTask<?> t2) {
t1.fork();
t2.fork();
t1.join();
t2.join();
}
答案 0 :(得分:1)
根据the documentation for ForkJoinTask
:
方法
invoke()
在语义上等同于invoke()
,但总是尝试在当前线程中开始执行。
因此t2
版本与您的版本做同样的事情,但不是将两个作业都传递给两个不同的线程,而是将t1
传递给另一个线程并尝试处理fork()
本身。那次传球的次数较少,涉及的线程较少。
在您的版本中,当前线程无关,只需等待$('#form-section').on('click', function(e) {
两个任务。