1

.join()为什么在启动线程之前不可能?不应该暗示如果我在线程上调用 join(),即使之前没有启动也应该启动?

4

2 回答 2

6

因为join()正如 Javadoc 所说,等待线程死亡;如果它还没有开始,它就不会死。

我不认为如果它没有启动它应该启动一个线程,因为该方法会做两件事:启动一个线程并等待线程,这是一个糟糕的设计。

于 2013-06-01T07:04:14.620 回答
2

根据javadoc

join 方法允许一个线程等待另一个线程完成。如果t是其线程当前正在执行的 Thread 对象,

t.join();

导致当前线程暂停执行,直到 t 的线程终止。连接的重载允许程序员指定一个等待时间。

所以它清楚地告诉如果你加入一个线程,那么当前线程将等到线程终止。因此,如果一个线程尚未启动,如何终止它。

矛盾证明:D

t说你可以在不开始的情况下加入一个线程。然后你打电话

t.join();

现在根据加入当前线程的行为将等待。现在说一些邪恶的想法(!)出现在您的脑海中,而您还没有启动线程(:D)。现在会发生什么?想象一下这个场景,你会找到答案

于 2013-06-01T07:08:15.720 回答