gpt4 book ai didi

java - forkjointask.java invokeall(t1,t2)方法,这个方法源码为什么不使用double join()方法?

转载 作者:行者123 更新时间:2023-11-30 08:05:10 25 4
gpt4 key购买 nike

来源:

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();
}

最佳答案

根据the documentation for ForkJoinTask :

Method invoke() is semantically equivalent to fork(); join() but always attempts to begin execution in the current thread.

因此,带有 invoke() 的版本与您的版本执行相同的操作,但不是将两个作业传递给两个不同的线程,而是将 t2 传递给另一个线程并尝试处理 t1 本身。这样传递的次数更少,涉及的线程也更少。

在您的版本中,当前线程除了等待 fork() 完成这两个任务之外什么都不做。

关于java - forkjointask.java invokeall(t1,t2)方法,这个方法源码为什么不使用double join()方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31227378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com