Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Thread.join()方法使用“join”一词?_Java_Java Threads - Fatal编程技术网

Java 为什么Thread.join()方法使用“join”一词?

Java 为什么Thread.join()方法使用“join”一词?,java,java-threads,Java,Java Threads,我开始研究为什么Thread.join方法使用join这个词。事实上,它会等待调用它的线程结束,并暂停主线程等待它,因此没有任何东西可以加入。所以,它的名字应该是这样的: 螺纹加工商; 线程调用程序; Thread.focusThread; Thread.runBefore; 经过太多的研究,我发现一个简单的句子是这样的: Thread.join;名称来源于调用线程等待指定线程加入它的概念 我完全无法记住上面这句话,也无法理解在这个方法中使用join这个词的背景语境。在这个上下文中,join这个

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

螺纹加工商; 线程调用程序; Thread.focusThread; Thread.runBefore; 经过太多的研究,我发现一个简单的句子是这样的:

Thread.join;名称来源于调用线程等待指定线程加入它的概念


我完全无法记住上面这句话,也无法理解在这个方法中使用join这个词的背景语境。在这个上下文中,join这个词代表什么?没有什么可以加入其他任何东西;相反,它只是暂停调用线程,等待该线程后面的连接。那么,有人能告诉这个方法使用连接词的上下文吗?

连接词来自,其中fork表示将线程拆分为多个线程进行并行处理,join表示等待并行线程完成其部分,在单个线程中继续之前。

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

请注意,在由可重用工作线程支持任务的模型中,这可能不完全相同,例如使用ExecutorService等待结果时,以及使用阻塞直到结果可用时。在这种情况下,联接与并行执行的任务的关系比实际的底层工作线程的关系更大,后者可能在以后被重用用于其他任务


名称本身来自用于并行化任务和收集其结果的

它完成了被称为“不”的线程。它不会以任何方式影响调用它的线程。它只是等待线程结束。也就是说:等待这个线程死亡。我同意这不是一个直观的名称。这是一个很好的问题,为什么它有这个奇怪的名字是有原因的,但如果你不知道它是不明显的。不过,我认为你提出的名字没有正确的概念。像等待这样的事情会更自然。沉重的否决票令人失望。我们不应该因为OP的困惑而惩罚他。最好是在回答中解释问题的误解,而不是否决它,因为他不太了解加入的作用。如果把这个方法命名得更好,也许他就不会这么困惑了。毕竟,这是一个来自UNIX的名称。Java实际上没有分叉。真的,join现在不是一个很好的名字吗?@JohnKugelman:同意,初学者的问题可以,名字的历史可能对理解它的含义很重要。@JohnKugelman当然,Java有分叉。我指的是来自的原始定义,它早于forking进程的Unix实现。分叉是一个概念,例如thread.start是一个fork操作,stream.parallel可能触发fork操作。因此,基本上一个新线程创建一个新的执行路径[a fork],然后join将新的执行路径合并回父线程之一。