有谁知道为什么 java.lang.Thread 的 join() 成员方法被这样命名?它的javadoc是:
等待这个线程死掉。
当在某个线程上调用 join 时,调用线程正在等待另一个线程死亡并继续执行。据说调用线程也会死掉,但仍然不清楚作者为什么使用这个名称。
有谁知道为什么 java.lang.Thread 的 join() 成员方法被这样命名?它的javadoc是:
等待这个线程死掉。
当在某个线程上调用 join 时,调用线程正在等待另一个线程死亡并继续执行。据说调用线程也会死掉,但仍然不清楚作者为什么使用这个名称。
它是线程中的一个通用名称——它不像 Java 是第一个使用它的。(例如,这也是pthreads使用的。)
我想你可以把它想象成两个人散步——你和另一个人一起散步,直到你完成,然后再回到你正在做的事情。这种类比可能是最初的原因,尽管我同意它并不完全直观。
之所以这样命名,是因为您基本上是在说明调用执行线程将等待加入给定的执行状态。它在 posix 和许多其他线程包中也被命名为 join。
在连接调用返回之后(除非它被中断),两个执行线程基本上从那时起一起运行(该线程获得现在终止线程的返回值)。
当控制流拆分为并发线程时,这源于并发软件建模。稍后,执行的两个线程将再次加入。
也waitToDie()
可能是a)太长和b)太病态。
嗯......这不是真的正确,但我想到了一个“候诊室”(它实际上不是一个具有特定调度的队列,如 FIFO、HRRN 等)。当一个线程无法继续并需要等待其他线程完成时,它只需加入等候室中的人(又名线程)以激活下一个......
因为您正在等待另一个执行线程(即您正在调用 join 的线程)加入(即死亡)到当前(即调用)线程。
调用线程不会死:它只是等待另一个线程这样做。
这是一个广泛使用的术语(Java 之外也是如此)。我认为它是一种以某种方式将一个线程与另一个线程相关联。我认为 Thread.Associate() 可能是一个更好的选择,但 Join() 也不错。