为什么 "join" 这个词用于 Thread.join() 方法?
Why is the word "join" is used for the Thread.join() method?
我开始进行研究以找出 "join" 一词用于 Thread.join()
方法的原因。事实上,它等待调用它的线程结束并暂停主线程等待它,所以没有什么可以加入。所以,它的名字应该是这样的:
- Thread.pauseCaller();
- Thread.freezeCaller();
- Thread.focusThread();
- Thread.runBefore();
经过大量研究,我发现了一个简单的句子:
Thread.join();
name comes from the concept of the calling thread waiting until the specified thread joins it.
我完全无法理解上面这句话,也无法理解使用join
这个词的背景上下文。 "join" 一词在这种情况下代表什么?没有什么可以加入其他任何东西;相反,它只是暂停调用线程以等待 join()
之后的线程。那么,任何人都可以告诉这个方法使用 join
词的上下文吗?
单词"join"来源于Fork–Join model,其中"fork"表示将线程拆分为多个线程并行处理,"join"表示等待并行线程完成它们的部分,然后在单个线程中继续。
Join 是并发模型中的一个常用术语,这意味着两个独立的 运行 线程正在相互同步,一个线程只有在另一个线程到达特定的连接点后才会继续。所以 2 个线程 连接 重新合二为一。在 Java 中,这通常是另一个线程完成其任务时。
请注意,在任务由可重复使用的工作线程支持的模型中,这可能不完全相同,例如使用 ExecutorService
等待结果,并使用 CompletableFuture.join()
阻塞直到结果可用。在这种情况下,加入更多地与并行执行的任务相关,而不是实际的底层工作线程,后者可能会在之后被其他任务重用。
名称本身来自 fork-join model 用于并行化任务并收集它们的结果。
我开始进行研究以找出 "join" 一词用于 Thread.join()
方法的原因。事实上,它等待调用它的线程结束并暂停主线程等待它,所以没有什么可以加入。所以,它的名字应该是这样的:
- Thread.pauseCaller();
- Thread.freezeCaller();
- Thread.focusThread();
- Thread.runBefore();
经过大量研究,我发现了一个简单的句子:
Thread.join();
name comes from the concept of the calling thread waiting until the specified thread joins it.
我完全无法理解上面这句话,也无法理解使用join
这个词的背景上下文。 "join" 一词在这种情况下代表什么?没有什么可以加入其他任何东西;相反,它只是暂停调用线程以等待 join()
之后的线程。那么,任何人都可以告诉这个方法使用 join
词的上下文吗?
单词"join"来源于Fork–Join model,其中"fork"表示将线程拆分为多个线程并行处理,"join"表示等待并行线程完成它们的部分,然后在单个线程中继续。
Join 是并发模型中的一个常用术语,这意味着两个独立的 运行 线程正在相互同步,一个线程只有在另一个线程到达特定的连接点后才会继续。所以 2 个线程 连接 重新合二为一。在 Java 中,这通常是另一个线程完成其任务时。
请注意,在任务由可重复使用的工作线程支持的模型中,这可能不完全相同,例如使用 ExecutorService
等待结果,并使用 CompletableFuture.join()
阻塞直到结果可用。在这种情况下,加入更多地与并行执行的任务相关,而不是实际的底层工作线程,后者可能会在之后被其他任务重用。
名称本身来自 fork-join model 用于并行化任务并收集它们的结果。