2013-06-01 52 views

回答

6

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

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

+0

是的东西不存在,不值得等待。 –

2

Acorrding到javadoc

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

t.join(); 

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

因此,它清楚地告诉你,如果你加入一个线程,那么当前线程 将等待直到线程终止。所以如果一个线程不是 开始,但它如何终止。

反证法:d

说,你可以加入一个线程t,而无需启动。那么你打电话

t.join(); 

现在根据连接当前线程的行为将等待。现在说一些邪恶的想法(!)出现在你的脑海中,而你还没有开始线程(:D)。现在会发生什么?想象一下这种情况,你会发现你的答案