由于您正在等待“其他”线程完成(即完成执行),因此join()将是更好的选择.
join()的javadoc简单地说:等待这个线程死掉.
这个机制相对简单:
@Override
public void run() {
System.out.println("Hello I'm thread " + getName());
if (otherThread != null) {
while (otherThread.isAlive()) {
try {
otherThread.join();
} catch (InterruptedException e) {
// ignore
}
}
}
System.out.println("I'm finished " + getName());
}
要解释:您需要引用otherThread.所以a指b,b指c,c指d,d不指任何otherThread(它为null).
语句otherThread.join()等待另一个线程完成.它被包装在循环中,因为join()可以抛出InterruptedException(虽然在实践中很少).
希望这有帮助,祝你好运.