为什么"join"这个词用于Thread.join()方法?

Dad*_*Boy -2 java java-threads

我开始研究,找出为什么单词"join"用于该Thread.join()方法.实际上,它等待线程结束调用它并暂停主线程等待它,因此没有任何东西可以加入.所以,它的名字应该是这样的:

  1. Thread.pauseCaller();
  2. Thread.freezeCaller();
  3. Thread.focusThread();
  4. Thread.runBefore();

经过太多研究后我发现了一个简单的句子:

Thread.join();name来自调用线程的概念,等待指定的线程加入它.

我完全无法将上述句子记在心里,也无法理解使用join该方法的背景语境.在这种情况下,"加入"一词代表什么?什么都没有加入其他东西; 相反,它只是暂停调用线程等待线程后跟的join().那么,任何人都可以告诉使用这个join词的方法吗?

And*_*eas 7

"join"一词来自Fork-Join模型,其中"fork"表示将线程拆分为多个线程以进行并行处理,"join"表示等待并行线程完成其部分,然后继续单个线.

  • 因此,基本上,一个新线程会创建一个新的执行路径 [a fork],然后“join”将新的执行路径合并回父线程的执行路径。 (2认同)

jbx*_*jbx 6

连接是并发模型中使用的一个常用术语,这意味着两个独立运行的线程彼此同步,并且一个线程在另一个线程到达特定连接点之前不会继续进行。所以 2 个线程重新连接成一个。在 Java 中,这通常是另一个线程完成其任务的时间。

请注意,在任务由可重用工作线程支持的模型中,这可能不完全相同,例如使用 anExecutorService等待结果,并使用CompletableFuture.join()阻塞直到结果可用。在这种情况下,连接与并行执行的任务比实际的底层工作线程更相关,后者可能会在之后重用于其他任务。

该名称本身来自用于并行化任务并收集其结果的fork-join 模型。