Thread.join()(实例方法)

时间:2013-06-01 07:01:38

标签: java multithreading join

为什么在启动线程之前无法.join()?如果我在一个线程上调用join(),即使以前没有启动也不应该是隐式的吗?

2 个答案:

答案 0 :(得分:6)

因为join()等待线程死亡,因为Javadoc说;如果尚未开始它就不会死亡。

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

答案 1 :(得分:2)

javadoc

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

t.join();

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

  

所以它清楚地告诉你,如果你加入一个线程,那么当前的线程   将等到线程终止。所以如果一个线程没有   开始了它怎么能被终止。

矛盾证明:D

假设您可以在不启动的情况下加入线程t。然后你打电话

t.join();

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