.join()
为什么在启动线程之前不可能?不应该暗示如果我在线程上调用 join(),即使之前没有启动也应该启动?
问问题
122 次
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 回答