有人知道为什么java.lang.Thread的方法join()成员被命名为?它的javadoc是:
等待此线程死亡。
当某个线程上调用join时,调用线程正在等待另一个线程死并继续执行。据说调用线程也会死掉,但仍然不清楚为什么作者使用了这个名字。
答案 0 :(得分:17)
这是线程中的常见名称 - 它不像Java是第一个使用它的。 (例如,这也是pthreads使用的。)
我想你可以想象它就像两个人散步一样 - 你加入另一个人并与他们一起走,直到你完成,然后回到你正在做的事情。类比的排序可能是最初的原因,虽然我同意它并不完全直观。
答案 1 :(得分:8)
它以这种方式命名,因为你基本上声明执行的调用线程将等待加入给定的执行状态。它也被命名为posix和许多其他线程包中的join。
在调用join返回之后(除非它被中断),两个执行线程基本上从那一点开始运行(该线程获得现在终止的线程的返回值)。
答案 2 :(得分:6)
这源于并发软件建模,当控制流分裂为并发线程时。之后,两个执行线程将再次加入。
同样waitToDie()
可能是a)太长而且b)太病态。
答案 3 :(得分:1)
答案 4 :(得分:0)
因为您正在等待另一个执行线程(即您正在调用的那个线程)加入(即死掉)当前(即调用)线程。
调用线程不会死:它只是等待另一个线程这样做。
答案 5 :(得分:0)
这是一个被广泛使用的术语(也在Java之外)。我认为它是以某种方式将一个线程与另一个线程相关联。我认为Thread.Associate()可能是一个更好的选择,但Join()也不错。