Чтобы убедиться, что родительский поток ждёт завершения дочернего потока, нужно использовать метод join(). Этот метод блокирует выполнение родительского потока до тех пор, пока указанный дочерний поток не завершит свою работу.
Когда ты вызываешь join() на объекте потока, текущий поток приостанавливается и ждёт, пока этот поток завершит выполнение, прежде чем продолжить остальной код.
Вот стандартный пример:
Thread myThread = new Thread(new Runnable() {
public void run() {
// Код дочернего потока выполняется здесь
}
});
myThread.start(); // Запускаешь дочерний поток
myThread.join(); // Родительский поток ждёт здесь
join() до тех пор, пока дочерний поток не завершитсяjoin() необходим для координации и синхронизации потоковjoin() родительский поток продолжал бы выполняться сразу после start(), потенциально завершившись раньше дочернего потокаУчти, что join() выбрасывает InterruptedException, поэтому нужно обернуть его в блок try-catch:
try {
myThread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
Метод join() блокирует текущий поток до завершения потока, на котором он был вызван.
Новый — ещё не проверен сообществом
Вы