假设我有两个线程t1和t2,根据Oracle文档,t1.join表示当前线程将等待t1完成。我的问题是,如果线程已经完成怎么办?例如:
Thread t1 = new Thread(new EventThread("e1"));
t1.start();
Thread e2 = new Thread(new EventThread("e2"));
t2.start();
while (true)
{
try {
t1.join();
t2.join();
break;
}
}
如果t2已经完成怎么办?
答案 0 :(得分:0)
来自join()
的文档:
此方法的调用与调用
的方式完全相同join(0)
join(long millis)
的文档说:
此实现使用以
this.wait
为条件的this.isAlive
调用循环。
因此,如果isAlive
返回false
(即线程已完成),则永远不会调用wait
,而join
只会立即返回。